diff options
author | Kangjie Lu <kangjielu@gmail.com> | 2016-06-02 04:04:56 -0400 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2016-08-22 22:38:28 +0100 |
commit | 3d4997da790d035dc4cc61f254d4de467a1bbf90 (patch) | |
tree | 9487909facdf5c977249f10bb9bc78fb61244fc3 | |
parent | ece77e42acbad777ab982f5c523df25e5e577d17 (diff) | |
download | lwn-3d4997da790d035dc4cc61f254d4de467a1bbf90.tar.gz lwn-3d4997da790d035dc4cc61f254d4de467a1bbf90.zip |
tipc: fix an infoleak in tipc_nl_compat_link_dump
commit 5d2be1422e02ccd697ccfcd45c85b4a26e6178e2 upstream.
link_info.str is a char array of size 60. Memory after the NULL
byte is not initialized. Sending the whole object out can cause
a leak.
Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
Signed-off-by: David S. Miller <davem@davemloft.net>
[carnil: Backported to 3.16 (same as bwh did for 3.2): the unpadded strcpy() is
in tipc_node_get_links() and no nlattr is involved, so use strncpy()]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r-- | net/tipc/node.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index 5b44c3041be4..1719d277ed60 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -417,7 +417,8 @@ struct sk_buff *tipc_node_get_links(const void *req_tlv_area, int req_tlv_space) continue; link_info.dest = htonl(n_ptr->addr); link_info.up = htonl(tipc_link_is_up(n_ptr->links[i])); - strcpy(link_info.str, n_ptr->links[i]->name); + strncpy(link_info.str, n_ptr->links[i]->name, + sizeof(link_info.str)); tipc_cfg_append_tlv(buf, TIPC_TLV_LINK_INFO, &link_info, sizeof(link_info)); } |