From 93e4172d376045814c3775deb24da28e99e6b5fa Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Mon, 18 Apr 2016 11:59:56 +0200 Subject: 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 --- src/segtree.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') 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) -- cgit v1.2.3