]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
segtree: set proper error cause on existing elements
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 10 Oct 2018 17:19:18 +0000 (19:19 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 10 Oct 2018 17:21:13 +0000 (19:21 +0200)
Adding new elements result in a confusing "Success" error message.

 # nft add element x y { 0-3 }
 [...]
 Error: Could not process rule: Success
 add element x y { 0-3 }
 ^^^^^^^^^^^^^^^^^^^^^^^^

after this patch, this reports:

 Error: Could not process rule: File exists
 add element x y { 0-3 }
 ^^^^^^^^^^^^^^^^^^^^^^^^

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/segtree.c

index 4ee09884cbde604788d2ccc22c246edd6402dd4a..5685618b3724ab586ef7a6d683f6bb4d12b78170 100644 (file)
@@ -270,6 +270,7 @@ static int ei_insert(struct list_head *msgs, struct seg_tree *tree,
 
        return 0;
 err:
+       errno = EEXIST;
        return expr_binary_error(msgs, lei->expr, new->expr,
                                 "conflicting intervals specified");
 }
@@ -371,6 +372,7 @@ static int set_overlap(struct list_head *msgs, const struct set *set,
 
                        expr_error(msgs, new_intervals[i]->expr,
                                   "interval overlaps with an existing one");
+                       errno = EEXIST;
                        ret = -1;
                        goto out;
                }