diff options
author | Kangjie Lu <kangjielu@gmail.com> | 2016-06-02 04:04:56 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-03 00:32:37 -0400 |
commit | 5d2be1422e02ccd697ccfcd45c85b4a26e6178e2 (patch) | |
tree | abd6690fafd3c802850031dc07041ff7c1daa2b4 /net | |
parent | ce25d66ad5f8d921bac5fe2d32d62fa30c0f9a70 (diff) |
tipc: fix an infoleak in tipc_nl_compat_link_dump
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>
Diffstat (limited to 'net')
-rw-r--r-- | net/tipc/netlink_compat.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c index f795b1dd0ccd..3ad9fab1985f 100644 --- a/net/tipc/netlink_compat.c +++ b/net/tipc/netlink_compat.c | |||
@@ -604,7 +604,8 @@ static int tipc_nl_compat_link_dump(struct tipc_nl_compat_msg *msg, | |||
604 | 604 | ||
605 | link_info.dest = nla_get_flag(link[TIPC_NLA_LINK_DEST]); | 605 | link_info.dest = nla_get_flag(link[TIPC_NLA_LINK_DEST]); |
606 | link_info.up = htonl(nla_get_flag(link[TIPC_NLA_LINK_UP])); | 606 | link_info.up = htonl(nla_get_flag(link[TIPC_NLA_LINK_UP])); |
607 | strcpy(link_info.str, nla_data(link[TIPC_NLA_LINK_NAME])); | 607 | nla_strlcpy(link_info.str, nla_data(link[TIPC_NLA_LINK_NAME]), |
608 | TIPC_MAX_LINK_NAME); | ||
608 | 609 | ||
609 | return tipc_add_tlv(msg->rep, TIPC_TLV_LINK_INFO, | 610 | return tipc_add_tlv(msg->rep, TIPC_TLV_LINK_INFO, |
610 | &link_info, sizeof(link_info)); | 611 | &link_info, sizeof(link_info)); |