mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-12 08:09:56 +00:00
[NETFILTER]: nfnetlink_queue: fix nfnetlink message size
Fix oversized message, use NLMSG_SPACE just one since it reserves space for the netlink header and NFA_SPACE for every attribute. Thanks to Harald Welte for the feedback Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1cde64365b
commit
f0d835835b
@ -354,16 +354,17 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
|
|||||||
QDEBUG("entered\n");
|
QDEBUG("entered\n");
|
||||||
|
|
||||||
/* all macros expand to constant values at compile time */
|
/* all macros expand to constant values at compile time */
|
||||||
size = NLMSG_SPACE(sizeof(struct nfqnl_msg_packet_hdr))
|
size = NLMSG_SPACE(sizeof(struct nfgenmsg)) +
|
||||||
+ NLMSG_SPACE(sizeof(u_int32_t)) /* ifindex */
|
+ NFA_SPACE(sizeof(struct nfqnl_msg_packet_hdr))
|
||||||
+ NLMSG_SPACE(sizeof(u_int32_t)) /* ifindex */
|
+ NFA_SPACE(sizeof(u_int32_t)) /* ifindex */
|
||||||
|
+ NFA_SPACE(sizeof(u_int32_t)) /* ifindex */
|
||||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||||
+ NLMSG_SPACE(sizeof(u_int32_t)) /* ifindex */
|
+ NFA_SPACE(sizeof(u_int32_t)) /* ifindex */
|
||||||
+ NLMSG_SPACE(sizeof(u_int32_t)) /* ifindex */
|
+ NFA_SPACE(sizeof(u_int32_t)) /* ifindex */
|
||||||
#endif
|
#endif
|
||||||
+ NLMSG_SPACE(sizeof(u_int32_t)) /* mark */
|
+ NFA_SPACE(sizeof(u_int32_t)) /* mark */
|
||||||
+ NLMSG_SPACE(sizeof(struct nfqnl_msg_packet_hw))
|
+ NFA_SPACE(sizeof(struct nfqnl_msg_packet_hw))
|
||||||
+ NLMSG_SPACE(sizeof(struct nfqnl_msg_packet_timestamp));
|
+ NFA_SPACE(sizeof(struct nfqnl_msg_packet_timestamp));
|
||||||
|
|
||||||
outdev = entinf->outdev;
|
outdev = entinf->outdev;
|
||||||
|
|
||||||
@ -388,7 +389,7 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
|
|||||||
else
|
else
|
||||||
data_len = queue->copy_range;
|
data_len = queue->copy_range;
|
||||||
|
|
||||||
size += NLMSG_SPACE(data_len);
|
size += NFA_SPACE(data_len);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user