]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
segtree: perform stricter expression type validation from expr_value()
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 18 Apr 2016 09:59:56 +0000 (11:59 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 25 Apr 2016 13:48:23 +0000 (15:48 +0200)
This helper function returns a expression value type that represents the
set element key. This functions currently expects two kind of
expressions: set elements and mappings.

Bail out otherwise, if we see anything else, we have to fix our code.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/segtree.c

index 060951c026c9ba208f5750879c8119567029928c..5b69ffb9086110469306df3963c487e6995966e4 100644 (file)
@@ -473,10 +473,14 @@ extern void interval_map_decompose(struct expr *set);
 
 static struct expr *expr_value(struct expr *expr)
 {
-       if (expr->ops->type == EXPR_MAPPING)
+       switch (expr->ops->type) {
+       case EXPR_MAPPING:
                return expr->left->key;
-       else
+       case EXPR_SET_ELEM:
                return expr->key;
+       default:
+               BUG("invalid expression type %s\n", expr->ops->name);
+       }
 }
 
 static int expr_value_cmp(const void *p1, const void *p2)