netfilter: ebtables: CONFIG_COMPAT: reject trailing data after last rule
authorFlorian Westphal <fw@strlen.de>
Sun, 5 May 2019 16:47:33 +0000 (18:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jan 2020 13:50:47 +0000 (14:50 +0100)
[ Upstream commit 680f6af5337c98d116e4f127cea7845339dba8da ]

If userspace provides a rule blob with trailing data after last target,
we trigger a splat, then convert ruleset to 64bit format (with trailing
data), then pass that to do_replace_finish() which then returns -EINVAL.

Erroring out right away avoids the splat plus unneeded translation and
error unwind.

Fixes: 81e675c227ec ("netfilter: ebtables: add CONFIG_COMPAT support")
Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/bridge/netfilter/ebtables.c

index 785e19a..f59230e 100644 (file)
@@ -2165,7 +2165,9 @@ static int compat_copy_entries(unsigned char *data, unsigned int size_user,
        if (ret < 0)
                return ret;
 
-       WARN_ON(size_remaining);
+       if (size_remaining)
+               return -EINVAL;
+
        return state->buf_kern_offset;
 }