50 lines
1.7 KiB
Diff
50 lines
1.7 KiB
Diff
From 387193faf4e8216ef201f2c685f69f6fa766ec46 Mon Sep 17 00:00:00 2001
|
|
From: Florian Westphal <fw@strlen.de>
|
|
Date: Sun, 18 Mar 2018 19:33:27 +0100
|
|
Subject: [PATCH] libmnl: zero attribute padding
|
|
|
|
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@strlen.de>
|
|
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|
(cherry picked from commit 37c876b55a2c00424ccda5a300ab5fdec1d88b22)
|
|
---
|
|
src/attr.c | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/src/attr.c b/src/attr.c
|
|
index 4f131874c11e4..0359ba959d7a0 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);
|
|
}
|
|
|