odhcpd: fix strncpy bounds
[project/odhcpd.git] / src / odhcpd.c
index 71b803d..8aa4571 100644 (file)
@@ -143,10 +143,12 @@ int odhcpd_get_interface_config(const char *ifname, const char *what)
 int odhcpd_get_mac(const struct interface *iface, uint8_t mac[6])
 {
        struct ifreq ifr;
+
        memset(&ifr, 0, sizeof(ifr));
-       strncpy(ifr.ifr_name, iface->ifname, sizeof(ifr.ifr_name));
+       strncpy(ifr.ifr_name, iface->ifname, sizeof(ifr.ifr_name) - 1);
        if (ioctl(ioctl_sock, SIOCGIFHWADDR, &ifr) < 0)
                return -1;
+
        memcpy(mac, ifr.ifr_hwaddr.sa_data, 6);
        return 0;
 }