[PATCH libmnl] attr: zero attribute padding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sergei Trofimovich reports 'uninitialized bytes' warnings from nftables:

Syscall param sendmsg(msg.msg_iov[0]) points to uninitialised byte(s)
   at 0x55B9EFB: sendmsg (in /lib64/libc-2.25.so)
   by 0x43E658: mnl_nft_socket_sendmsg (mnl.c:239)
   by 0x43E658: mnl_batch_talk (mnl.c:254)
   by 0x407898: nft_netlink (libnftables.c:58)
   by 0x407898: nft_run (libnftables.c:96)
   by 0x407CD5: nft_run_cmd_from_buffer (libnftables.c:291)
   by 0x406EDE: main (main.c:274)

This is harmless, the uninitialized memory is the padding
that sometimes needs to be inserted between end of an attribute
and the beginning of the new attribute.

Zero it to silence memory sanitizer output.

Signed-off-by: Florian Westphal <fw@xxxxxxxxx>
---
 src/attr.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/attr.c b/src/attr.c
index 4f131874c11e..0359ba959d7a 100644
--- a/src/attr.c
+++ b/src/attr.c
@@ -412,10 +412,15 @@ void mnl_attr_put(struct nlmsghdr *nlh, uint16_t type, size_t len,
 {
 	struct nlattr *attr = mnl_nlmsg_get_payload_tail(nlh);
 	uint16_t payload_len = MNL_ALIGN(sizeof(struct nlattr)) + len;
+	int pad;
 
 	attr->nla_type = type;
 	attr->nla_len = payload_len;
 	memcpy(mnl_attr_get_payload(attr), data, len);
+	pad = MNL_ALIGN(len) - len;
+	if (pad > 0)
+		memset(mnl_attr_get_payload(attr) + len, 0, pad);
+
 	nlh->nlmsg_len += MNL_ALIGN(payload_len);
 }
 
-- 
2.16.1

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux