From: Phil Sutter <phil@nwl.cc>
To: Stefano Brivio <sbrivio@redhat.com>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>,
netfilter-devel@vger.kernel.org, Florian Westphal <fw@strlen.de>
Subject: Re: [PATCH nf 0/2] nft_set_pipapo: Fix crash due to dangling entries in mapping table
Date: Tue, 25 Feb 2020 19:48:57 +0100 [thread overview]
Message-ID: <20200225184857.GC9532@orbyte.nwl.cc> (raw)
In-Reply-To: <20200225153435.17319874@redhat.com>
Hi,
Sorry for jumping back into the discussion this late.
On Tue, Feb 25, 2020 at 03:34:35PM +0100, Stefano Brivio wrote:
[...]
> Or also simply with:
>
> # nft add element t s '{ 20-30 . 40 }'
> # nft add element t s '{ 25-35 . 40 }'
>
> the second element is silently ignored. I'm returning -EEXIST from
> nft_pipapo_insert(), but nft_add_set_elem() clears it because NLM_F_EXCL
> is not set.
>
> Are you suggesting that this is consistent and therefore not a problem?
>
> Or are you proposing that I should handle this in userspace as it's done
> for non-concatenated ranges?
The problem is that user tried to add a new element which is not yet
contained and the 'add element' command is the same as if it was
identical to an existing one. We must not ignore this situation as the
user needs to know: In the above case e.g., element '35 . 40' won't
match after the zero-return from 'add element' command.
At first I assumed we could merge e.g.:
| { 20-30 . 40-50, 25-35 . 45-55 }
into:
| { 20-35 . 40-55 }
But now I realize this is wrong. We would match e.g. '{ 20 . 55 }', a
combination the user never specified.
Given that merging multiple concatenated ranges is a non-trivial task, I
guess the only sane thing to do (for now at least) is to perform overlap
detection in user space and reject the command if an overlap is
detected. Stefano, do you see any problems with that?
Thanks, Phil
next prev parent reply other threads:[~2020-02-25 18:49 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-21 2:04 [PATCH nf 0/2] nft_set_pipapo: Fix crash due to dangling entries in mapping table Stefano Brivio
2020-02-21 2:04 ` [PATCH nf 1/2] nft_set_pipapo: Actually fetch key data in nft_pipapo_remove() Stefano Brivio
2020-02-21 2:04 ` [PATCH nf 2/2] selftests: nft_concat_range: Add test for reported add/flush/add issue Stefano Brivio
2020-02-21 21:17 ` [PATCH nf 0/2] nft_set_pipapo: Fix crash due to dangling entries in mapping table Phil Sutter
2020-02-21 22:22 ` Stefano Brivio
2020-02-22 1:19 ` Phil Sutter
2020-02-23 21:22 ` Stefano Brivio
2020-02-25 12:39 ` Pablo Neira Ayuso
2020-02-25 12:45 ` Stefano Brivio
2020-02-25 13:13 ` Stefano Brivio
2020-02-25 13:42 ` Pablo Neira Ayuso
2020-02-25 14:34 ` Stefano Brivio
2020-02-25 18:48 ` Phil Sutter [this message]
2020-02-25 19:33 ` Stefano Brivio
2020-02-25 20:21 ` Pablo Neira Ayuso
2020-02-25 20:38 ` Stefano Brivio
2020-02-25 20:58 ` Pablo Neira Ayuso
2020-02-26 10:58 ` Pablo Neira Ayuso
2020-02-26 11:01 ` Pablo Neira Ayuso
2020-02-26 11:02 ` Stefano Brivio
2020-02-26 11:29 ` Pablo Neira Ayuso
2020-02-26 11:36 ` Stefano Brivio
2020-02-26 11:53 ` Pablo Neira Ayuso
2020-02-26 10:59 ` Stefano Brivio
2020-02-26 11:10 ` Pablo Neira Ayuso
2020-02-26 11:19 ` Stefano Brivio
2020-02-26 11:34 ` Pablo Neira Ayuso
2020-02-26 11:39 ` Stefano Brivio
2020-02-26 11:54 ` Stefano Brivio
2020-02-26 12:10 ` Pablo Neira Ayuso
2020-02-26 13:33 ` Pablo Neira Ayuso
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200225184857.GC9532@orbyte.nwl.cc \
--to=phil@nwl.cc \
--cc=fw@strlen.de \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
--cc=sbrivio@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).