diff -ru sbin/ifconfig.orig/ifconfig.c sbin/ifconfig/ifconfig.c --- sbin/ifconfig.orig/ifconfig.c 2004-07-07 07:01:15.000000000 -0300 +++ sbin/ifconfig/ifconfig.c 2004-10-26 20:06:57.000000000 -0200 @@ -513,7 +513,7 @@ if (argc < 1) usage(); - strncpy(name, *argv, sizeof(name)); + strlcpy(name, *argv, sizeof(name)); argc--, argv++; /* check and maybe load support for this interface */ @@ -612,8 +612,7 @@ if (downonly) if (flags & IFF_UP) continue; /* not down */ - strncpy(name, sdl->sdl_data, sdl->sdl_nlen); - name[sdl->sdl_nlen] = '\0'; + strlcpy(name, sdl->sdl_data, sizeof(name)); if (namesonly) { if (afp == NULL || afp->af_status != link_status || @@ -666,7 +665,7 @@ if (afp == NULL) afp = &afs[0]; ifr.ifr_addr.sa_family = afp->af_af == AF_LINK ? AF_INET : afp->af_af; - strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name); + strlcpy(ifr.ifr_name, name, sizeof ifr.ifr_name); if ((s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0)) < 0) err(1, "socket"); @@ -741,7 +740,7 @@ } if (clearaddr) { int ret; - strncpy(afp->af_ridreq, name, sizeof ifr.ifr_name); + strlcpy(afp->af_ridreq, name, sizeof ifr.ifr_name); if ((ret = ioctl(s, afp->af_difaddr, afp->af_ridreq)) < 0) { if (errno == EADDRNOTAVAIL && (doalias >= 0)) { /* means no previous address for interface */ @@ -757,7 +756,7 @@ } } if (newaddr && (setaddr || setmask)) { - strncpy(afp->af_addreq, name, sizeof ifr.ifr_name); + strlcpy(afp->af_addreq, name, sizeof ifr.ifr_name); if (ioctl(s, afp->af_aifaddr, afp->af_addreq) < 0) Perror("ioctl (SIOCAIFADDR)"); } @@ -814,7 +813,7 @@ switch (srcres->ai_addr->sa_family) { case AF_INET: memset(&addreq, 0, sizeof(addreq)); - strncpy(addreq.ifra_name, name, IFNAMSIZ); + strlcpy(addreq.ifra_name, name, IFNAMSIZ); memcpy(&addreq.ifra_addr, srcres->ai_addr, srcres->ai_addr->sa_len); memcpy(&addreq.ifra_dstaddr, dstres->ai_addr, @@ -827,7 +826,7 @@ #ifdef INET6 case AF_INET6: memset(&in6_addreq, 0, sizeof(in6_addreq)); - strncpy(in6_addreq.ifra_name, name, IFNAMSIZ); + strlcpy(in6_addreq.ifra_name, name, IFNAMSIZ); memcpy(&in6_addreq.ifra_addr, srcres->ai_addr, srcres->ai_addr->sa_len); memcpy(&in6_addreq.ifra_dstaddr, dstres->ai_addr, @@ -1020,7 +1019,7 @@ Perror("ioctl (SIOCGIFFLAGS)"); exit(1); } - strncpy(my_ifr.ifr_name, name, sizeof (my_ifr.ifr_name)); + strlcpy(my_ifr.ifr_name, name, sizeof (my_ifr.ifr_name)); flags = (my_ifr.ifr_flags & 0xffff) | (my_ifr.ifr_flagshigh << 16); if (value < 0) { @@ -1057,7 +1056,7 @@ setifmetric(const char *val, int dummy __unused, int s, const struct afswtch *afp) { - strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name)); + strlcpy(ifr.ifr_name, name, sizeof (ifr.ifr_name)); ifr.ifr_metric = atoi(val); if (ioctl(s, SIOCSIFMETRIC, (caddr_t)&ifr) < 0) warn("ioctl (set metric)"); @@ -1066,7 +1065,7 @@ void setifmtu(const char *val, int dummy __unused, int s, const struct afswtch *afp) { - strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name)); + strlcpy(ifr.ifr_name, name, sizeof (ifr.ifr_name)); ifr.ifr_mtu = atoi(val); if (ioctl(s, SIOCSIFMTU, (caddr_t)&ifr) < 0) warn("ioctl (set mtu)"); @@ -1125,7 +1124,7 @@ allfamilies = 0; ifr.ifr_addr.sa_family = afp->af_af == AF_LINK ? AF_INET : afp->af_af; - strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name); + strlcpy(ifr.ifr_name, name, sizeof ifr.ifr_name); if ((s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0)) < 0) err(1, "socket"); @@ -1186,7 +1185,7 @@ if (allfamilies || afp->af_status == ieee80211_status) ieee80211_status(s, NULL); #endif - strncpy(ifs.ifs_name, name, sizeof ifs.ifs_name); + strlcpy(ifs.ifs_name, name, sizeof ifs.ifs_name); if (ioctl(s, SIOCGIFSTATUS, &ifs) == 0) printf("%s", ifs.ascii); @@ -1224,7 +1223,7 @@ #ifdef INET6 memset(&in6_ifr, 0, sizeof(in6_ifr)); - strncpy(in6_ifr.ifr_name, name, IFNAMSIZ); + strlcpy(in6_ifr.ifr_name, name, IFNAMSIZ); s6 = socket(AF_INET6, SOCK_DGRAM, 0); if (s6 < 0) { srccmd = SIOCGIFPSRCADDR; @@ -1328,7 +1327,7 @@ memset(&null_sin, 0, sizeof(null_sin)); sin = (struct sockaddr_in6 *)info->rti_info[RTAX_IFA]; - strncpy(ifr6.ifr_name, ifr.ifr_name, sizeof(ifr.ifr_name)); + strlcpy(ifr6.ifr_name, ifr.ifr_name, sizeof(ifr.ifr_name)); if ((s6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { perror("ifconfig: socket"); return; @@ -1749,7 +1748,7 @@ if ((temp = malloc(strlen(addr) + 1)) == NULL) errx(1, "malloc failed"); temp[0] = ':'; - strcpy(temp + 1, addr); + strlcpy(temp + 1, addr, strlen(addr) + 1); sdl.sdl_len = sizeof(sdl); link_addr(temp, &sdl); free(temp); @@ -1866,19 +1865,21 @@ if (days) { first = 0; - p += sprintf(p, "%dd", days); + p += snprintf(p, sizeof(result), "%dd", days); } if (!first || hours) { first = 0; - p += sprintf(p, "%dh", hours); + p += snprintf(p, sizeof(result) - strlen(result), "%dh", + hours); } if (!first || mins) { first = 0; - p += sprintf(p, "%dm", mins); + p += snprintf(p, sizeof(result) - strlen(result), "%dm", + mins); } - sprintf(p, "%ds", secs); + snprintf(p, sizeof(result) - strlen(result), "%ds", secs); } else - sprintf(result, "%lu", (unsigned long)total); + snprintf(result, sizeof(result), "%lu", (unsigned long)total); return(result); } @@ -1893,7 +1894,7 @@ /* turn interface and unit into module name */ - strcpy(ifkind, "if_"); + strlcpy(ifkind, "if_", sizeof(ifkind)); for (cp = name, dp = ifkind + 3; (*cp != 0) && !isdigit(*cp); cp++, dp++) *dp = *cp; @@ -1998,7 +1999,7 @@ clone_destroy(const char *val, int d, int s, const struct afswtch *rafp) { - (void) strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); + strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); if (ioctl(s, SIOCIFDESTROY, &ifr) < 0) err(1, "SIOCIFDESTROY"); /* diff -ru sbin/ifconfig.orig/ifieee80211.c sbin/ifconfig/ifieee80211.c --- sbin/ifconfig.orig/ifieee80211.c 2004-07-27 10:56:50.000000000 -0300 +++ sbin/ifconfig/ifieee80211.c 2004-10-26 20:05:17.000000000 -0200 @@ -290,7 +290,7 @@ char spacer; (void) memset(&ireq, 0, sizeof(ireq)); - (void) strncpy(ireq.i_name, name, sizeof(ireq.i_name)); + strlcpy(ireq.i_name, name, sizeof(ireq.i_name)); ireq.i_data = &data; ireq.i_type = IEEE80211_IOC_SSID; @@ -444,7 +444,7 @@ struct ieee80211req ireq; (void) memset(&ireq, 0, sizeof(ireq)); - (void) strncpy(ireq.i_name, name, sizeof(ireq.i_name)); + strlcpy(ireq.i_name, name, sizeof(ireq.i_name)); ireq.i_type = type; ireq.i_val = val; ireq.i_len = len; diff -ru sbin/ifconfig.orig/ifmedia.c sbin/ifconfig/ifmedia.c --- sbin/ifconfig.orig/ifmedia.c 2003-11-03 17:51:05.000000000 -0200 +++ sbin/ifconfig/ifmedia.c 2004-10-26 20:05:17.000000000 -0200 @@ -109,7 +109,7 @@ int *media_list, i; (void) memset(&ifmr, 0, sizeof(ifmr)); - (void) strncpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name)); + strlcpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name)); if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) { /* @@ -189,7 +189,7 @@ int first_type, subtype; (void) memset(&ifmr, 0, sizeof(ifmr)); - (void) strncpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name)); + strlcpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name)); ifmr.ifm_count = 1; ifmr.ifm_ulist = &first_type; @@ -216,7 +216,7 @@ */ subtype = get_media_subtype(IFM_TYPE(first_type), val); - strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); + strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); ifr.ifr_media = (ifmr.ifm_current & ~(IFM_NMASK|IFM_TMASK)) | IFM_TYPE(first_type) | subtype; @@ -245,7 +245,7 @@ int *mwords, options; (void) memset(&ifmr, 0, sizeof(ifmr)); - (void) strncpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name)); + strlcpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name)); /* * We must go through the motions of reading all @@ -271,7 +271,7 @@ free(mwords); - strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); + strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); ifr.ifr_media = ifmr.ifm_current; if (clear) ifr.ifr_media &= ~options; diff -ru sbin/ifconfig.orig/ifvlan.c sbin/ifconfig/ifvlan.c --- sbin/ifconfig.orig/ifvlan.c 2003-09-28 11:39:18.000000000 -0300 +++ sbin/ifconfig/ifvlan.c 2004-10-26 20:05:17.000000000 -0200 @@ -115,7 +115,7 @@ if (ioctl(s, SIOCGETVLAN, (caddr_t)&ifr) == -1) err(1, "SIOCGETVLAN"); - strncpy(vreq.vlr_parent, val, sizeof(vreq.vlr_parent)); + strlcpy(vreq.vlr_parent, val, sizeof(vreq.vlr_parent)); vreq.vlr_tag = __tag; if (ioctl(s, SIOCSETVLAN, (caddr_t)&ifr) == -1)