• Pablo Neira Ayuso's avatar
    netfilter: nfnetlink_queue: fix maximum packet length to userspace · ba8d3b0b
    Pablo Neira Ayuso authored
    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: default avatarFlorian Westphal <fw@strlen.de>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    ba8d3b0b
nfnetlink_queue_core.c 26.2 KB