netfilter: nf_tables: validate len in nft_validate_data_load()
[deliverable/linux.git] / net / netfilter / nft_exthdr.c
index 55c939f5371fabf35ad996efb51ea52a29630703..a0a322780b0f0f6a9d6a2c76071e1216ec5f684a 100644 (file)
@@ -69,15 +69,13 @@ static int nft_exthdr_init(const struct nft_ctx *ctx,
        priv->type   = nla_get_u8(tb[NFTA_EXTHDR_TYPE]);
        priv->offset = ntohl(nla_get_be32(tb[NFTA_EXTHDR_OFFSET]));
        priv->len    = ntohl(nla_get_be32(tb[NFTA_EXTHDR_LEN]));
-       if (priv->len == 0 ||
-           priv->len > FIELD_SIZEOF(struct nft_data, data))
-               return -EINVAL;
 
        priv->dreg = ntohl(nla_get_be32(tb[NFTA_EXTHDR_DREG]));
        err = nft_validate_output_register(priv->dreg);
        if (err < 0)
                return err;
-       return nft_validate_data_load(ctx, priv->dreg, NULL, NFT_DATA_VALUE);
+       return nft_validate_data_load(ctx, priv->dreg, NULL,
+                                     NFT_DATA_VALUE, priv->len);
 }
 
 static int nft_exthdr_dump(struct sk_buff *skb, const struct nft_expr *expr)
This page took 0.034256 seconds and 5 git commands to generate.