From: Sebastian Walz (sivizius) Date: Mon, 19 Aug 2024 18:11:44 +0000 (+0200) Subject: parser_json: fix several expression memleaks from error path X-Git-Tag: v1.1.1~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bae7b4d283826efbeb28c21aecd7b355e86da170;p=thirdparty%2Fnftables.git parser_json: fix several expression memleaks from error path Fixes: 586ad210368b ("libnftables: Implement JSON parser") Signed-off-by: Sebastian Walz (sivizius) Signed-off-by: Pablo Neira Ayuso --- diff --git a/src/parser_json.c b/src/parser_json.c index fc20fe29..8ca44efb 100644 --- a/src/parser_json.c +++ b/src/parser_json.c @@ -1308,6 +1308,7 @@ static struct expr *json_parse_range_expr(struct json_ctx *ctx, expr_high = json_parse_primary_expr(ctx, high); if (!expr_high) { json_error(ctx, "Invalid high value in range expression."); + expr_free(expr_low); return NULL; } return range_expr_alloc(int_loc, expr_low, expr_high); @@ -1889,6 +1890,8 @@ static struct stmt *json_parse_mangle_stmt(struct json_ctx *ctx, return stmt; default: json_error(ctx, "Invalid mangle statement key expression type."); + expr_free(key); + expr_free(value); return NULL; } } @@ -2888,6 +2891,7 @@ static struct stmt *json_parse_optstrip_stmt(struct json_ctx *ctx, expr->etype != EXPR_EXTHDR || expr->exthdr.op != NFT_EXTHDR_OP_TCPOPT) { json_error(ctx, "Illegal TCP optstrip argument"); + expr_free(expr); return NULL; }