ifconfig(8): Use strlcpy() instead of strncpy()
authorAaron LI <aly@aaronly.me>
Fri, 23 Mar 2018 01:37:13 +0000 (09:37 +0800)
committerAaron LI <aly@aaronly.me>
Sun, 5 Aug 2018 01:47:42 +0000 (09:47 +0800)
sbin/ifconfig/af_inet.c
sbin/ifconfig/ifcarp.c
sbin/ifconfig/ifclone.c
sbin/ifconfig/ifconfig.c
sbin/ifconfig/ifieee80211.c
sbin/ifconfig/ifmedia.c
sbin/ifconfig/ifvlan.c

index 419b5ad..04e3fa2 100644 (file)
@@ -144,7 +144,7 @@ in_status_tunnel(int s)
        const struct sockaddr *sa = (const struct sockaddr *) &ifr.ifr_addr;
 
        memset(&ifr, 0, sizeof(ifr));
-       strncpy(ifr.ifr_name, name, IFNAMSIZ);
+       strlcpy(ifr.ifr_name, name, IFNAMSIZ);
 
        if (ioctl(s, SIOCGIFPSRCADDR, (caddr_t)&ifr) < 0)
                return;
@@ -169,7 +169,7 @@ in_set_tunnel(int s, struct addrinfo *srcres, struct addrinfo *dstres)
        struct ifaliasreq addreq;
 
        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, dstres->ai_addr->sa_len);
 
index b59c4dc..21141e4 100644 (file)
@@ -86,7 +86,7 @@ carp_status(int s)
        }
 
        memset(&ifd, 0, sizeof(ifd));
-       strncpy(ifd.ifd_name, ifr.ifr_name, sizeof(ifd.ifd_name));
+       strlcpy(ifd.ifd_name, ifr.ifr_name, sizeof(ifd.ifd_name));
        ifd.ifd_cmd = CARPGDEVNAME;
        ifd.ifd_len = sizeof(devname);
        ifd.ifd_data = devname;
@@ -187,7 +187,7 @@ getcarp_vhaddr(const char *val, int d, int s, const struct afswtch *afp)
        int count, i;
 
        memset(&ifd, 0, sizeof(ifd));
-       strncpy(ifd.ifd_name, ifr.ifr_name, sizeof(ifd.ifd_name));
+       strlcpy(ifd.ifd_name, ifr.ifr_name, sizeof(ifd.ifd_name));
        ifd.ifd_cmd = CARPGVHADDR;
        if (ioctl(s, SIOCGDRVSPEC, &ifd) < 0)
                return;
index 145345b..e517968 100644 (file)
@@ -120,7 +120,7 @@ ifclonecreate(int s, void *arg)
        clone_callback_func *clone_cb = NULL;
 
        memset(&ifr, 0, sizeof(ifr));
-       (void) strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
+       strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
 
        if (clone_cb == NULL) {
                /* Try to find a default callback */
@@ -158,7 +158,7 @@ DECL_CMD_FUNC(clone_create, arg, d)
 static
 DECL_CMD_FUNC(clone_destroy, arg, d)
 {
-       (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");
 }
index 77eb0c0..c5ae843 100644 (file)
@@ -491,7 +491,7 @@ ifconfig(int argc, char *const *argv, int iscreate, const struct afswtch *uafp)
        struct callback *cb;
        int s;
 
-       strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
+       strlcpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
        afp = uafp != NULL ? uafp : af_getbyname("inet");
 top:
        ifr.ifr_addr.sa_family =
@@ -523,7 +523,7 @@ top:
                         * After cloning, make sure we have an up-to-date name
                         * in ifr_name.
                         */
-                       strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
+                       strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
 
                         /*
                          * Handle any address family spec that
@@ -597,7 +597,7 @@ top:
        }
        if (clearaddr) {
                int ret;
-               strncpy(afp->af_ridreq, name, sizeof ifr.ifr_name);
+               strlcpy(afp->af_ridreq, name, sizeof ifr.ifr_name);
                ret = ioctl(s, afp->af_difaddr, afp->af_ridreq);
                if (ret < 0) {
                        if (errno == EADDRNOTAVAIL && (doalias >= 0)) {
@@ -614,7 +614,7 @@ top:
                }
        }
        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)");
        }
@@ -740,7 +740,7 @@ setifflags(const char *vname, int value, int s, const struct afswtch *afp)
                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) {
@@ -777,7 +777,7 @@ static void
 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)");
@@ -787,7 +787,7 @@ static 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)");
@@ -797,7 +797,7 @@ static void
 setiftsolen(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_tsolen = atoi(val);
        if (ioctl(s, SIOCSIFTSOLEN, (caddr_t)&ifr) < 0)
                warn("ioctl (set tsolen)");
@@ -885,7 +885,7 @@ status(const struct afswtch *afp, int addrcount, struct     sockaddr_dl *sdl,
                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));
 
        s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0);
        if (s < 0)
@@ -955,8 +955,8 @@ status(const struct afswtch *afp, int addrcount, struct     sockaddr_dl *sdl,
        else if (afp->af_other_status != NULL)
                afp->af_other_status(s);
 
-       strncpy(ifs.ifs_name, name, sizeof ifs.ifs_name);
        if (ioctl(s, SIOCGIFSTATUS, &ifs) == 0) 
+       strlcpy(ifs.ifs_name, name, sizeof ifs.ifs_name);
                printf("%s", ifs.ascii);
 
        close(s);
index 7a6d66f..af8768f 100644 (file)
@@ -3214,7 +3214,7 @@ scan_and_wait(int s)
                return;
        }
        (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 = IEEE80211_IOC_SCAN_REQ;
 
        memset(&sr, 0, sizeof(sr));
@@ -3664,7 +3664,7 @@ get80211wme(int s, int param, int ac, int *val)
        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 = param;
        ireq.i_len = ac;
        if (ioctl(s, SIOCG80211, &ireq) < 0) {
@@ -3845,7 +3845,7 @@ list_mac(int s)
        char c;
 
        (void) memset(&ireq, 0, sizeof(ireq));
-       (void) strncpy(ireq.i_name, name, sizeof(ireq.i_name)); /* XXX ?? */
+       strlcpy(ireq.i_name, name, sizeof(ireq.i_name)); /* XXX ?? */
        ireq.i_type = IEEE80211_IOC_MACCMD;
        ireq.i_val = IEEE80211_MACCMD_POLICY;
        if (ioctl(s, SIOCG80211, &ireq) < 0) {
@@ -3951,7 +3951,7 @@ list_mesh(int s)
        struct ieee80211req_mesh_route *rt;
 
        (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 = IEEE80211_IOC_MESH_RTCMD;
        ireq.i_val = IEEE80211_MESH_RTCMD_LIST;
        ireq.i_data = &routes;
@@ -4031,7 +4031,7 @@ get80211opmode(int s)
        struct ifmediareq ifmr;
 
        (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) {
                if (ifmr.ifm_current & IFM_IEEE80211_ADHOC) {
@@ -4175,7 +4175,7 @@ getid(int s, int ix, void *data, size_t len, int *plen, int mesh)
        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 = (!mesh) ? IEEE80211_IOC_SSID : IEEE80211_IOC_MESH_ID;
        ireq.i_val = ix;
        ireq.i_data = data;
@@ -4836,7 +4836,7 @@ get80211(int s, int type, void *data, int len)
        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_data = data;
        ireq.i_len = len;
@@ -4849,7 +4849,7 @@ get80211len(int s, int type, void *data, int len, int *plen)
        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_len = len;
        assert(ireq.i_len == len);      /* NB: check for 16-bit truncation */
@@ -4866,7 +4866,7 @@ get80211val(int s, int type, int *val)
        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;
        if (ioctl(s, SIOCG80211, &ireq) < 0)
                return -1;
@@ -4880,7 +4880,7 @@ set80211(int s, int type, int val, int len, void *data)
        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;
index 1c5875f..ed37146 100644 (file)
@@ -105,7 +105,7 @@ media_status(int s)
        int *media_list, i;
 
        memset(&ifmr, 0, sizeof(ifmr));
-       strncpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name));
+       strlcpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name));
 
        if (ioctl(s, SIOCGIFMEDIA, &ifmr) < 0) {
                /*
@@ -196,8 +196,7 @@ ifmedia_getstate(int s)
                        err(1, "malloc");
 
                (void) memset(ifmr, 0, sizeof(struct ifmediareq));
-               (void) strncpy(ifmr->ifm_name, name,
-                   sizeof(ifmr->ifm_name));
+               strlcpy(ifmr->ifm_name, name, sizeof(ifmr->ifm_name));
 
                ifmr->ifm_count = 0;
                ifmr->ifm_ulist = NULL;
@@ -263,7 +262,7 @@ setmedia(const char *val, int d, int s, const struct afswtch *afp)
         */
        subtype = get_media_subtype(IFM_TYPE(ifmr->ifm_ulist[0]), 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(ifmr->ifm_ulist[0]) | subtype;
 
@@ -299,7 +298,7 @@ domediaopt(const char *val, int clear, int s)
 
        options = get_media_options(IFM_TYPE(ifmr->ifm_ulist[0]), 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;
        if (clear)
                ifr.ifr_media &= ~options;
@@ -321,7 +320,7 @@ setmediamode(const char *val, int d, int s, const struct afswtch *afp)
 
        mode = get_media_mode(IFM_TYPE(ifmr->ifm_ulist[0]), 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_MMASK) | mode;
 
        ifmr->ifm_current = ifr.ifr_media;
index 6bfcd2a..207a2ca 100644 (file)
@@ -95,7 +95,7 @@ static void
 setvlandev(const char *val, int d, int s, const struct afswtch *afp)
 {
 
-       strncpy(__vreq.vlr_parent, val, sizeof(__vreq.vlr_parent));
+       strlcpy(__vreq.vlr_parent, val, sizeof(__vreq.vlr_parent));
        __have_dev = 1;
 }