NETFILTER: ctnetlink: check for status attribute existence on conntrack creation
authorPablo Neira Ayuso <pablo@netfilter.org>
Sat, 24 Mar 2007 20:18:36 +0000 (21:18 +0100)
committerAdrian Bunk <bunk@stusta.de>
Sat, 24 Mar 2007 20:18:36 +0000 (21:18 +0100)
Check that status flags are available in the netlink message received
to create a new conntrack.

Fixes a crash in ctnetlink_create_conntrack when the CTA_STATUS attribute
is not present.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
net/ipv4/netfilter/ip_conntrack_netlink.c
net/netfilter/nf_conntrack_netlink.c

index d4e6d0a3bf2066c51080da0a247958f5b640b4fa..f558a014d68b68d2c9cda515588355c98b32fe0b 100644 (file)
@@ -1021,9 +1021,11 @@ ctnetlink_create_conntrack(struct nfattr *cda[],
        ct->timeout.expires = jiffies + ct->timeout.expires * HZ;
        ct->status |= IPS_CONFIRMED;
 
-       err = ctnetlink_change_status(ct, cda);
-       if (err < 0)
-               goto err;
+       if (cda[CTA_STATUS-1]) {
+               err = ctnetlink_change_status(ct, cda);
+               if (err < 0)
+                       goto err;
+       }
 
        if (cda[CTA_PROTOINFO-1]) {
                err = ctnetlink_change_protoinfo(ct, cda);
index 40edeefb28146f4be4a7c8e46e7533491202316d..eca3a1abddba54f752f184b8a57ecb8198a6025e 100644 (file)
@@ -1035,9 +1035,11 @@ ctnetlink_create_conntrack(struct nfattr *cda[],
        ct->timeout.expires = jiffies + ct->timeout.expires * HZ;
        ct->status |= IPS_CONFIRMED;
 
-       err = ctnetlink_change_status(ct, cda);
-       if (err < 0)
-               goto err;
+       if (cda[CTA_STATUS-1]) {
+               err = ctnetlink_change_status(ct, cda);
+               if (err < 0)
+                       goto err;
+       }
 
        if (cda[CTA_PROTOINFO-1]) {
                err = ctnetlink_change_protoinfo(ct, cda);