|
@@ -328,10 +328,12 @@ replay:
|
|
nlh = nlmsg_hdr(skb);
|
|
nlh = nlmsg_hdr(skb);
|
|
err = 0;
|
|
err = 0;
|
|
|
|
|
|
- if (nlmsg_len(nlh) < sizeof(struct nfgenmsg) ||
|
|
|
|
- skb->len < nlh->nlmsg_len) {
|
|
|
|
- err = -EINVAL;
|
|
|
|
- goto ack;
|
|
|
|
|
|
+ if (nlh->nlmsg_len < NLMSG_HDRLEN ||
|
|
|
|
+ skb->len < nlh->nlmsg_len ||
|
|
|
|
+ nlmsg_len(nlh) < sizeof(struct nfgenmsg)) {
|
|
|
|
+ nfnl_err_reset(&err_list);
|
|
|
|
+ status |= NFNL_BATCH_FAILURE;
|
|
|
|
+ goto done;
|
|
}
|
|
}
|
|
|
|
|
|
/* Only requests are handled by the kernel */
|
|
/* Only requests are handled by the kernel */
|