diff options
author | Phil Sutter <phil@nwl.cc> | 2025-07-29 17:55:17 +0200 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2025-07-31 13:27:04 +0200 |
commit | 9b2b1614093aa1cdd1d5e5dc575a6009650cd3e8 (patch) | |
tree | 1d9ef686383b7653a418b911ad84b06f13006016 | |
parent | 26ed87de43142dac3c85390ae27e50a156581e94 (diff) |
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 <phil@nwl.cc>
Reviewed-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | src/parser_json.c | 12 |
1 files changed, 11 insertions, 1 deletions
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); } |