diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2016-04-18 11:59:56 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2016-04-25 15:48:23 +0200 |
commit | 93e4172d376045814c3775deb24da28e99e6b5fa (patch) | |
tree | f99fbac0d79bcbd0eb0e664a36e18ba4aeaf3bbd /src/segtree.c | |
parent | be5d9120e81e4a9a6d44457990112f30d0d214bb (diff) |
segtree: perform stricter expression type validation from expr_value()
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>
Diffstat (limited to 'src/segtree.c')
-rw-r--r-- | src/segtree.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/segtree.c b/src/segtree.c index 060951c0..5b69ffb9 100644 --- a/src/segtree.c +++ b/src/segtree.c @@ -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) |