[NETFILTER] ip_queue: Fix wrong skb->len == nlmsg_len assumption
The size of the skb carrying the netlink message is not equivalent to the length of the actual netlink message due to padding. ip_queue matches the length of the payload against the original packet size to determine if packet mangling is desired, due to the above wrong assumption arbitary packets may not be mangled depening on their original size. Signed-off-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d0b004840b
commit
850a9a4e3c
|
@ -524,7 +524,7 @@ ipq_rcv_skb(struct sk_buff *skb)
|
|||
write_unlock_bh(&queue_lock);
|
||||
|
||||
status = ipq_receive_peer(NLMSG_DATA(nlh), type,
|
||||
skblen - NLMSG_LENGTH(0));
|
||||
nlmsglen - NLMSG_LENGTH(0));
|
||||
if (status < 0)
|
||||
RCV_SKB_FAIL(status);
|
||||
|
||||
|
|
|
@ -522,7 +522,7 @@ ipq_rcv_skb(struct sk_buff *skb)
|
|||
write_unlock_bh(&queue_lock);
|
||||
|
||||
status = ipq_receive_peer(NLMSG_DATA(nlh), type,
|
||||
skblen - NLMSG_LENGTH(0));
|
||||
nlmsglen - NLMSG_LENGTH(0));
|
||||
if (status < 0)
|
||||
RCV_SKB_FAIL(status);
|
||||
|
||||
|
|
Loading…
Reference in a new issue