summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSebastian Walz (sivizius) <sebastian.walz@secunet.com>2024-08-19 20:11:44 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2024-08-21 23:22:47 +0200
commitbae7b4d283826efbeb28c21aecd7b355e86da170 (patch)
tree22febe46d495f267c0ad60ee0ea5f44ae2ee176f /src
parent46700fbdbbbaab0d7db716fce3a438334c58ac9e (diff)
parser_json: fix several expression memleaks from error path
Fixes: 586ad210368b ("libnftables: Implement JSON parser") Signed-off-by: Sebastian Walz (sivizius) <sebastian.walz@secunet.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/parser_json.c4
1 files changed, 4 insertions, 0 deletions
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;
}