]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
parser_bison: missing initialization of ct timeout policy list
authorPablo Neira Ayuso <pablo@netfilter.org>
Thu, 22 Jul 2021 16:14:28 +0000 (18:14 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 22 Jul 2021 16:50:27 +0000 (18:50 +0200)
rule.c:1715:3: runtime error: member access within null pointer of type 'struct timeout_state'
AddressSanitizer:DEADLYSIGNAL
=================================================================
==29500==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7f5bfd43c2a4 bp 0x7ffcb82f13b0 sp 0x7ffcb82f1360 T0)
==29500==The signal is caused by a READ memory access.
==29500==Hint: address points to the zero page.
    #0 0x7f5bfd43c2a3 in obj_free /home/test/nftables/src/rule.c:1715
    #1 0x7f5bfd43875d in cmd_free /home/test/nftables/src/rule.c:1447
    #2 0x7f5bfd58e6f2 in nft_run_cmd_from_filename /home/test/nftables/src/libnftables.c:628
    #3 0x5645c48762b1 in main /home/test/nftables/src/main.c:512
    #4 0x7f5bfc0eb09a in __libc_start_main ../csu/libc-start.c:308
    #5 0x5645c4873459 in _start (/home/test/nftables/src/.libs/nft+0x9459)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /home/test/nftables/src/rule.c:1715 in obj_free
==29500==ABORTING

Fixes: 7a0e26723496 ("rule: memleak of list of timeout policies")
Signed-off-by: Pablo Neira Ayuso <test@netfilter.org>
src/parser_bison.y

index 790cd832b74222161ab998a983f7d8271c4351c0..5545a43d160efd0961d2437d6cfb68edf8e4196b 100644 (file)
@@ -1313,6 +1313,8 @@ delete_cmd                :       TABLE           table_or_id_spec
                        |       CT      ct_obj_type     obj_spec        ct_obj_alloc    close_scope_ct
                        {
                                $$ = cmd_alloc_obj_ct(CMD_DELETE, $2, &$3, &@$, $4);
+                               if ($2 == NFT_OBJECT_CT_TIMEOUT)
+                                       init_list_head(&$4->ct_timeout.timeout_list);
                        }
                        |       LIMIT           obj_or_id_spec  close_scope_limit
                        {