netfilter: nft_osf: add missing check for DREG attribute
authorFlorian Westphal <fw@strlen.de>
Sat, 18 Jan 2020 10:27:25 +0000 (11:27 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Jan 2020 15:43:21 +0000 (16:43 +0100)
commit 7eaecf7963c1c8f62d62c6a8e7c439b0e7f2d365 upstream.

syzbot reports just another NULL deref crash because of missing test
for presence of the attribute.

Reported-by: syzbot+cf23983d697c26c34f60@syzkaller.appspotmail.com
Fixes:  b96af92d6eaf9fadd ("netfilter: nf_tables: implement Passive OS fingerprint module in nft_osf")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/netfilter/nft_osf.c

index df4e3e0..a003533 100644 (file)
@@ -47,6 +47,9 @@ static int nft_osf_init(const struct nft_ctx *ctx,
        struct nft_osf *priv = nft_expr_priv(expr);
        int err;
 
+       if (!tb[NFTA_OSF_DREG])
+               return -EINVAL;
+
        priv->dreg = nft_parse_register(tb[NFTA_OSF_DREG]);
        err = nft_validate_register_store(ctx, priv->dreg, NULL,
                                          NFT_DATA_VALUE, NFT_OSF_MAXGENRELEN);