diff --git a/sbin/ifconfig/ifconfig.c b/sbin/ifconfig/ifconfig.c index 0e433a54cf46..0e6ae2b8c52b 100644 --- a/sbin/ifconfig/ifconfig.c +++ b/sbin/ifconfig/ifconfig.c @@ -113,7 +113,7 @@ struct in6_aliasreq in6_addreq = struct sockaddr_in netmask; struct netrange at_nr; /* AppleTalk net range */ -char name[32]; +char name[IFNAMSIZ]; int flags; int setaddr; int setipdst; @@ -596,8 +596,9 @@ main(int argc, char *argv[]) addrcount++; next += nextifm->ifm_msglen; } - strncpy(name, sdl->sdl_data, sdl->sdl_nlen); - name[sdl->sdl_nlen] = '\0'; + strlcpy(name, sdl->sdl_data, + sizeof(name) <= sdl->sdl_nlen ? + sizeof(name) : sdl->sdl_nlen + 1); if (all || namesonly) { if (uponly) diff --git a/sbin/ifconfig/ifconfig.h b/sbin/ifconfig/ifconfig.h index 7430c691142e..622be5409772 100644 --- a/sbin/ifconfig/ifconfig.h +++ b/sbin/ifconfig/ifconfig.h @@ -36,7 +36,7 @@ extern struct ifreq ifr; -extern char name[32]; /* name of interface */ +extern char name[IFNAMSIZ]; /* name of interface */ extern int allmedia; extern int supmedia; struct afswtch;