Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0d83583 authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso Committed by David S. Miller
Browse files

[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: default avatarPablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1cde6436
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -354,16 +354,17 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
	QDEBUG("entered\n");

	/* all macros expand to constant values at compile time */
	size =    NLMSG_SPACE(sizeof(struct nfqnl_msg_packet_hdr))
		+ NLMSG_SPACE(sizeof(u_int32_t))	/* ifindex */
		+ NLMSG_SPACE(sizeof(u_int32_t))	/* ifindex */
	size =    NLMSG_SPACE(sizeof(struct nfgenmsg)) +
		+ NFA_SPACE(sizeof(struct nfqnl_msg_packet_hdr))
		+ NFA_SPACE(sizeof(u_int32_t))	/* ifindex */
		+ NFA_SPACE(sizeof(u_int32_t))	/* ifindex */
#ifdef CONFIG_BRIDGE_NETFILTER
		+ NLMSG_SPACE(sizeof(u_int32_t))	/* ifindex */
		+ NLMSG_SPACE(sizeof(u_int32_t))	/* ifindex */
		+ NFA_SPACE(sizeof(u_int32_t))	/* ifindex */
		+ NFA_SPACE(sizeof(u_int32_t))	/* ifindex */
#endif
		+ NLMSG_SPACE(sizeof(u_int32_t))	/* mark */
		+ NLMSG_SPACE(sizeof(struct nfqnl_msg_packet_hw))
		+ NLMSG_SPACE(sizeof(struct nfqnl_msg_packet_timestamp));
		+ NFA_SPACE(sizeof(u_int32_t))	/* mark */
		+ NFA_SPACE(sizeof(struct nfqnl_msg_packet_hw))
		+ NFA_SPACE(sizeof(struct nfqnl_msg_packet_timestamp));

	outdev = entinf->outdev;

@@ -388,7 +389,7 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
		else
			data_len = queue->copy_range;
		
		size += NLMSG_SPACE(data_len);
		size += NFA_SPACE(data_len);
		break;
	
	default: