summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2016-04-18 11:59:56 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2016-04-25 15:48:23 +0200
commit93e4172d376045814c3775deb24da28e99e6b5fa (patch)
treef99fbac0d79bcbd0eb0e664a36e18ba4aeaf3bbd /src
parentbe5d9120e81e4a9a6d44457990112f30d0d214bb (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')
-rw-r--r--src/segtree.c8
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)