]> git.baikalelectronics.ru Git - kernel.git/commit
netfilter: nfnetlink_queue: fix maximum packet length to userspace
authorPablo Neira Ayuso <pablo@netfilter.org>
Thu, 6 Sep 2012 15:09:26 +0000 (17:09 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 24 Sep 2012 12:47:40 +0000 (14:47 +0200)
commit460a8bbd2763d34d4415980e5d5c5cb7e88a6cb5
treef8962ef36f2dcd19c5b3675a0b5e7c9274860d5e
parenta2c39b575e9022adc1f19a0bbbbf604f7393fb16
netfilter: nfnetlink_queue: fix maximum packet length to userspace

The packets that we send via NFQUEUE are encapsulated in the NFQA_PAYLOAD
attribute. The length of the packet in userspace is obtained via
attr->nla_len field. This field contains the size of the Netlink
attribute header plus the packet length.

If the maximum packet length is specified, ie. 65535 bytes, and
packets in the range of (65531,65535] are sent to userspace, the
attr->nla_len overflows and it reports bogus lengths to the
application.

To fix this, this patch limits the maximum packet length to 65531
bytes. If larger packet length is specified, the packet that we
send to user-space is truncated to 65531 bytes.

To support 65535 bytes packets, we have to revisit the idea of
the 32-bits Netlink attribute length.

Reported-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nfnetlink_queue_core.c