From d755c2a3ae7fe8272321a1d81eafbd90052c4f14 Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Wed, 13 Dec 2023 11:18:06 +0100 Subject: parser_bison: fix memory leaks on hookspec error processing prio_spec may contain an embedded expression, release it. We also need to release the device expr and the hook string. Signed-off-by: Florian Westphal --- src/parser_bison.y | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/parser_bison.y') diff --git a/src/parser_bison.y b/src/parser_bison.y index c69252fe..571eddf1 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -708,6 +708,8 @@ int nft_lex(void *, void *, void *); %type family_spec family_spec_explicit %type int_num chain_policy %type extended_prio_spec prio_spec +%destructor { expr_free($$.expr); } extended_prio_spec prio_spec + %type extended_prio_name quota_unit basehook_device_name %destructor { free_const($$); } extended_prio_name quota_unit basehook_device_name @@ -2615,6 +2617,9 @@ hook_spec : TYPE close_scope_type STRING HOOK STRING dev_spec prio_spec erec_queue(error(&@3, "unknown chain type"), state->msgs); free_const($3); + free_const($5); + expr_free($6); + expr_free($7.expr); YYERROR; } $0->type.loc = @3; @@ -2628,6 +2633,8 @@ hook_spec : TYPE close_scope_type STRING HOOK STRING dev_spec prio_spec erec_queue(error(&@5, "unknown chain hook"), state->msgs); free_const($5); + expr_free($6); + expr_free($7.expr); YYERROR; } free_const($5); -- cgit v1.2.3