summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-03-02 15:43:41 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-03-04 21:45:45 -0500
commit2388b2f4d4481c69935abdc9c3ed9928d1f15a46 (patch)
treeeda81baf5ff1633d5170cbc13e9118c4aadd3761
parent72e551f40b0bcc6f59b093b70424f3af32ed759b (diff)
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.
-rw-r--r--src/network/networkctl.c3
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 &&