Re: [PATCH 3.10 007/180] netfilter: x_tables: validate targets of jumps

From: Florian Westphal
Date: Sun Aug 21 2016 - 16:16:25 EST


Willy Tarreau <w@xxxxxx> wrote:
> On Sun, Aug 21, 2016 at 05:28:57PM +0200, Willy Tarreau wrote:
> > From: Florian Westphal <fw@xxxxxxxxx>
> >
> > commit 36472341017529e2b12573093cc0f68719300997 upstream.
> >
> > When we see a jump also check that the offset gets us to beginning of
> > a rule (an ipt_entry).
> (...)
>
> Sorry, this patch is bad and causes performance issues, I didn't notice
> that 3.14 had a different version, below. Thanks to Jay for reporting
> the problem to me. I'll push 3.10.103-rc2 after some cool down period.

Please either hold this one back or also queue
commit f4dc77713f8016d2e8a3295e1c9c53a21f296def
netfilter: x_tables: speed up jump target validation

It supersedes this one.

> +static bool find_jump_target(const struct xt_table_info *t,
> + const void *entry0,
> + const struct arpt_entry *target)
> +{
> + struct arpt_entry *iter;
> +
> + xt_entry_foreach(iter, entry0, t->size) {
> + if (iter == target)
> + return true;
> + }

This linear search works but its too slow with large rule sets.