[PATCH 4.19 39/92] netfilter: nft_osf: add missing check for DREG attribute

From: Greg Kroah-Hartman
Date: Tue Jan 28 2020 - 09:31:08 EST


From: Florian Westphal <fw@xxxxxxxxx>

commit 7eaecf7963c1c8f62d62c6a8e7c439b0e7f2d365 upstream.

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

Reported-by: syzbot+cf23983d697c26c34f60@xxxxxxxxxxxxxxxxxxxxxxxxx
Fixes: b96af92d6eaf9fadd ("netfilter: nf_tables: implement Passive OS fingerprint module in nft_osf")
Signed-off-by: Florian Westphal <fw@xxxxxxxxx>
Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
net/netfilter/nft_osf.c | 3 +++
1 file changed, 3 insertions(+)

--- a/net/netfilter/nft_osf.c
+++ b/net/netfilter/nft_osf.c
@@ -47,6 +47,9 @@ static int nft_osf_init(const struct nft
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);