]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/netfilter/ipset/ip_set_list_set.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek...
[karo-tx-linux.git] / net / netfilter / ipset / ip_set_list_set.c
index 51077c53d76b1f00bc96e5f708fcd398b58afd22..178d4eba013b480ede5a54e121e5b0b92fc2edc1 100644 (file)
@@ -260,11 +260,14 @@ list_set_uadd(struct ip_set *set, void *value, const struct ip_set_ext *ext,
                else
                        prev = e;
        }
+
+       /* If before/after is used on an empty set */
+       if ((d->before > 0 && !next) ||
+           (d->before < 0 && !prev))
+               return -IPSET_ERR_REF_EXIST;
+
        /* Re-add already existing element */
        if (n) {
-               if ((d->before > 0 && !next) ||
-                   (d->before < 0 && !prev))
-                       return -IPSET_ERR_REF_EXIST;
                if (!flag_exist)
                        return -IPSET_ERR_EXIST;
                /* Update extensions */