summaryrefslogtreecommitdiffstats
path: root/src/rule.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2014-02-25 22:27:12 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2014-02-27 10:35:07 +0100
commit41175cec8407da4687493a9f74043656682d470a (patch)
tree0480536d5861270c83edc43908cc9abe5da6eb69 /src/rule.c
parent19c3da8e70d32818b7267fc63b44441295e69567 (diff)
src: early attribute type validation in nft_*_attr_set
This allows us to remove the default case in the switch, which show help to spot missing attribute support since gcc will spot a compilation warning. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/rule.c')
-rw-r--r--src/rule.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/rule.c b/src/rule.c
index 53d2ebf..5e149c7 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -115,6 +115,9 @@ EXPORT_SYMBOL(nft_rule_attr_unset);
void nft_rule_attr_set(struct nft_rule *r, uint16_t attr, const void *data)
{
+ if (attr > NFT_RULE_ATTR_MAX)
+ return;
+
switch(attr) {
case NFT_RULE_ATTR_TABLE:
if (r->table)
@@ -143,8 +146,6 @@ void nft_rule_attr_set(struct nft_rule *r, uint16_t attr, const void *data)
case NFT_RULE_ATTR_POSITION:
r->position = *((uint64_t *)data);
break;
- default:
- return;
}
r->flags |= (1 << attr);
}