From: Phil Sutter Date: Tue, 29 Jul 2025 15:55:17 +0000 (+0200) Subject: parser_json: Parse into symbol range expression if possible X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b2b1614093aa1cdd1d5e5dc575a6009650cd3e8;p=thirdparty%2Fnftables.git parser_json: Parse into symbol range expression if possible Apply the bison parser changes in commit 347039f64509e ("src: add symbol range expression to further compact intervals") to JSON parser as well. Fixes: 347039f64509e ("src: add symbol range expression to further compact intervals") Signed-off-by: Phil Sutter Reviewed-by: Pablo Neira Ayuso --- diff --git a/src/parser_json.c b/src/parser_json.c index be0de698..71e44f19 100644 --- a/src/parser_json.c +++ b/src/parser_json.c @@ -1360,7 +1360,7 @@ static struct expr *json_parse_prefix_expr(struct json_ctx *ctx, static struct expr *json_parse_range_expr(struct json_ctx *ctx, const char *type, json_t *root) { - struct expr *expr_low, *expr_high; + struct expr *expr_low, *expr_high, *tmp; json_t *low, *high; if (json_unpack_err(ctx, root, "[o, o!]", &low, &high)) @@ -1377,6 +1377,16 @@ static struct expr *json_parse_range_expr(struct json_ctx *ctx, expr_free(expr_low); return NULL; } + if (is_symbol_value_expr(expr_low) && is_symbol_value_expr(expr_high)) { + tmp = symbol_range_expr_alloc(int_loc, + SYMBOL_VALUE, + expr_low->scope, + expr_low->identifier, + expr_high->identifier); + expr_free(expr_low); + expr_free(expr_high); + return tmp; + } return range_expr_alloc(int_loc, expr_low, expr_high); }