]> err.no Git - linux-2.6/blobdiff - net/netfilter/nf_conntrack_extend.c
netfilter: fix string extension for case insensitive pattern matching
[linux-2.6] / net / netfilter / nf_conntrack_extend.c
index 8a3f8b34e4661ef38a8acb81b7c5fb015cf108c6..3469bc71a385eacb66b2099c334833469ec889cf 100644 (file)
@@ -95,13 +95,11 @@ void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp)
        newlen = newoff + t->len;
        rcu_read_unlock();
 
-       if (newlen >= ksize(ct->ext)) {
-               new = kmalloc(newlen, gfp);
-               if (!new)
-                       return NULL;
-
-               memcpy(new, ct->ext, ct->ext->len);
+       new = krealloc(ct->ext, newlen, gfp);
+       if (!new)
+               return NULL;
 
+       if (new != ct->ext) {
                for (i = 0; i < NF_CT_EXT_NUM; i++) {
                        if (!nf_ct_ext_exist(ct, i))
                                continue;