]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
libxt_sctp: fix array out of range in print_chunk
authorhuaibin Wang <huaibin.wang@6wind.com>
Mon, 13 Nov 2017 13:27:54 +0000 (14:27 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 13 Nov 2017 13:30:08 +0000 (14:30 +0100)
For chunk type ASCONF, ASCONF_ACK and FORWARD_TSN, sctp_chunk_names[].chunk_type
is not equal to the corresponding index in sctp_chunk_names[]. Using this field
leads to a segmentation fault (index out of range).

Example
$ iptables -A INPUT -p sctp --chunk-type all ASCONF,ASCONF_ACK,FORWARD_TSN -j ACCEPT
$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Segmentation fault

Signed-off-by: huaibin Wang <huaibin.wang@6wind.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
extensions/libxt_sctp.c
extensions/libxt_sctp.t

index df1936be8b83a1c9789a33f38af37cd553d2bec4..140de2653b1ef1a61d7e2730b4d0ff59c0932602 100644 (file)
@@ -370,7 +370,7 @@ print_chunk(uint32_t chunknum, int numeric)
 
                for (i = 0; i < ARRAY_SIZE(sctp_chunk_names); ++i)
                        if (sctp_chunk_names[i].chunk_type == chunknum)
-                               printf("%s", sctp_chunk_names[chunknum].name);
+                               printf("%s", sctp_chunk_names[i].name);
        }
 }
 
index 2f75e2a68e8eb40143986fa88e6f6a9bfd111562..4016e4fb1880e8423a9659532439ccc1b0e9f9c7 100644 (file)
 -p sctp -m sctp --chunk-types all COOKIE_ACK;=;OK
 -p sctp -m sctp --chunk-types all ECN_ECNE;=;OK
 -p sctp -m sctp --chunk-types all ECN_CWR;=;OK
-# ERROR: iptables-save segfaults: iptables -A INPUT -p sctp -m sctp --chunk-types all ASCONF
-# -p sctp -m sctp --chunk-types all ASCONF;=;OK
-# ERROR: iptables-save segfaults: iptables -A INPUT -p sctp -m sctp --chunk-types all ASCONF_ACK
-# -p sctp -m sctp --chunk-types all ASCONF_ACK;=;OK
-# ERROR: iptables-save segfaults: iptables -A INPUT -p sctp -m sctp --chunk-types all FORWARD_TSN
-# -p sctp -m sctp --chunk-types all FORWARD_TSN;=;OK
+-p sctp -m sctp --chunk-types all ASCONF;=;OK
+-p sctp -m sctp --chunk-types all ASCONF_ACK;=;OK
+-p sctp -m sctp --chunk-types all FORWARD_TSN;=;OK
 -p sctp -m sctp --chunk-types all SHUTDOWN_COMPLETE;=;OK