From 5c1a72f0ef504f6be3fdc23224060aaffddb14f5 Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Sun, 23 Aug 2020 13:35:07 +0200 Subject: [PATCH] Userland: Prefer strlcpy over strncpy in ifconfig, fixes off-by-one A malicious caller of ifconfig could have caused the ifr_name field to lack NUL-termination. I don't think this was an actual problem, though, as the Kernel always forces NUL-termination by overwriting ifr_name's last byte with NUL. However, it feels better to do it properly. --- Userland/ifconfig.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Userland/ifconfig.cpp b/Userland/ifconfig.cpp index eb5bd75cec..32235e7cc3 100644 --- a/Userland/ifconfig.cpp +++ b/Userland/ifconfig.cpp @@ -116,7 +116,7 @@ int main(int argc, char** argv) struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); - strncpy(ifr.ifr_name, ifname.characters(), IFNAMSIZ); + strlcpy(ifr.ifr_name, ifname.characters(), IFNAMSIZ); ifr.ifr_addr.sa_family = AF_INET; ((sockaddr_in&)ifr.ifr_addr).sin_addr.s_addr = address.value().to_in_addr_t(); @@ -144,7 +144,7 @@ int main(int argc, char** argv) struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); - strncpy(ifr.ifr_name, ifname.characters(), IFNAMSIZ); + strlcpy(ifr.ifr_name, ifname.characters(), IFNAMSIZ); ifr.ifr_netmask.sa_family = AF_INET; ((sockaddr_in&)ifr.ifr_netmask).sin_addr.s_addr = address.value().to_in_addr_t();