diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2016-03-02 15:43:41 -0500 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2016-03-04 21:45:45 -0500 |
commit | 2388b2f4d4481c69935abdc9c3ed9928d1f15a46 (patch) | |
tree | eda81baf5ff1633d5170cbc13e9118c4aadd3761 /src/network/networkctl.c | |
parent | 72e551f40b0bcc6f59b093b70424f3af32ed759b (diff) | |
download | systemd-2388b2f4d4481c69935abdc9c3ed9928d1f15a46.tar.gz |
networkctl: avoid reading past end of input buffer
name is IFNAMSIZ bytes, but we would copy sizeof(info->name) bytes,
which is IFNAMSIZ + 1. In effect we would go outside of the source
buffer and possibly leave a non-null terminated string in info->name.
CID #1351754.
Diffstat (limited to 'src/network/networkctl.c')
-rw-r--r-- | src/network/networkctl.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/network/networkctl.c b/src/network/networkctl.c index e5b08d4826..6ec7a911ca 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -45,6 +45,7 @@ #include "string-table.h" #include "string-util.h" #include "strv.h" +#include "strxcpyx.h" #include "terminal-util.h" #include "util.h" #include "verbs.h" @@ -173,7 +174,7 @@ static int decode_link(sd_netlink_message *m, LinkInfo *info) { if (r < 0) return r; - strncpy(info->name, name, sizeof(info->name)); + strscpy(info->name, sizeof info->name, name); info->has_mac_address = sd_netlink_message_read_ether_addr(m, IFLA_ADDRESS, &info->mac_address) >= 0 && |