From: Pablo Neira Ayuso Date: Mon, 18 Apr 2016 09:59:56 +0000 (+0200) Subject: segtree: perform stricter expression type validation from expr_value() X-Git-Tag: v0.6~61 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=93e4172d376045814c3775deb24da28e99e6b5fa;p=thirdparty%2Fnftables.git 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 --- 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)