ntpd: remove some code which is at best unneeded and at worst wrong
[oweals/busybox.git] / networking / interface.c
index 00174d496595987598bc82bff91688328b084b0e..b64d24a58b73d68e64d6011ab6e55e9699d5ce96 100644 (file)
@@ -395,7 +395,7 @@ static struct interface *add_interface(char *name)
        }
 
        new = xzalloc(sizeof(*new));
-       strncpy(new->name, name, IFNAMSIZ);
+       strncpy_IFNAMSIZ(new->name, name);
        nextp = ife ? &ife->next : &int_list;
        new->prev = ife;
        new->next = *nextp;
@@ -410,20 +410,20 @@ static struct interface *add_interface(char *name)
 static char *get_name(char *name, char *p)
 {
        /* Extract <name> from nul-terminated p where p matches
-          <name>: after leading whitespace.
-          If match is not made, set name empty and return unchanged p */
-       int namestart = 0, nameend = 0;
+        * <name>: after leading whitespace.
+        * If match is not made, set name empty and return unchanged p
+        */
+       char *nameend;
+       char *namestart = skip_whitespace(p);
 
-       while (isspace(p[namestart]))
-               namestart++;
        nameend = namestart;
-       while (p[nameend] && p[nameend] != ':' && !isspace(p[nameend]))
+       while (*nameend && *nameend != ':' && !isspace(*nameend))
                nameend++;
-       if (p[nameend] == ':') {
+       if (*nameend == ':') {
                if ((nameend - namestart) < IFNAMSIZ) {
-                       memcpy(name, &p[namestart], nameend - namestart);
+                       memcpy(name, namestart, nameend - namestart);
                        name[nameend - namestart] = '\0';
-                       p = &p[nameend];
+                       p = nameend;
                } else {
                        /* Interface name too large */
                        name[0] = '\0';
@@ -614,39 +614,39 @@ static int if_fetch(struct interface *ife)
 
        skfd = xsocket(AF_INET, SOCK_DGRAM, 0);
 
-       strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
        if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) {
                close(skfd);
                return -1;
        }
        ife->flags = ifr.ifr_flags;
 
-       strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
        memset(ife->hwaddr, 0, 32);
        if (ioctl(skfd, SIOCGIFHWADDR, &ifr) >= 0)
                memcpy(ife->hwaddr, ifr.ifr_hwaddr.sa_data, 8);
 
        ife->type = ifr.ifr_hwaddr.sa_family;
 
-       strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
        ife->metric = 0;
        if (ioctl(skfd, SIOCGIFMETRIC, &ifr) >= 0)
                ife->metric = ifr.ifr_metric;
 
-       strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
        ife->mtu = 0;
        if (ioctl(skfd, SIOCGIFMTU, &ifr) >= 0)
                ife->mtu = ifr.ifr_mtu;
 
        memset(&ife->map, 0, sizeof(struct ifmap));
 #ifdef SIOCGIFMAP
-       strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
        if (ioctl(skfd, SIOCGIFMAP, &ifr) == 0)
                ife->map = ifr.ifr_map;
 #endif
 
 #ifdef HAVE_TXQUEUELEN
-       strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
        ife->tx_queue_len = -1; /* unknown value */
        if (ioctl(skfd, SIOCGIFTXQLEN, &ifr) >= 0)
                ife->tx_queue_len = ifr.ifr_qlen;
@@ -654,23 +654,23 @@ static int if_fetch(struct interface *ife)
        ife->tx_queue_len = -1; /* unknown value */
 #endif
 
-       strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
        ifr.ifr_addr.sa_family = AF_INET;
        memset(&ife->addr, 0, sizeof(struct sockaddr));
        if (ioctl(skfd, SIOCGIFADDR, &ifr) == 0) {
                ife->has_ip = 1;
                ife->addr = ifr.ifr_addr;
-               strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+               strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
                memset(&ife->dstaddr, 0, sizeof(struct sockaddr));
                if (ioctl(skfd, SIOCGIFDSTADDR, &ifr) >= 0)
                        ife->dstaddr = ifr.ifr_dstaddr;
 
-               strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+               strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
                memset(&ife->broadaddr, 0, sizeof(struct sockaddr));
                if (ioctl(skfd, SIOCGIFBRDADDR, &ifr) >= 0)
                        ife->broadaddr = ifr.ifr_broadaddr;
 
-               strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+               strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
                memset(&ife->netmask, 0, sizeof(struct sockaddr));
                if (ioctl(skfd, SIOCGIFNETMASK, &ifr) >= 0)
                        ife->netmask = ifr.ifr_netmask;
@@ -1242,10 +1242,8 @@ int FAST_FUNC in_ib(const char *bufp, struct sockaddr *sap)
                c = *bufp++;
                if (isdigit(c))
                        val = c - '0';
-               else if (c >= 'a' && c <= 'f')
-                       val = c - 'a' + 10;
-               else if (c >= 'A' && c <= 'F')
-                       val = c - 'A' + 10;
+               else if ((c|0x20) >= 'a' && (c|0x20) <= 'f')
+                       val = (c|0x20) - ('a' - 10);
                else {
                        errno = EINVAL;
                        return -1;
@@ -1254,17 +1252,15 @@ int FAST_FUNC in_ib(const char *bufp, struct sockaddr *sap)
                c = *bufp;
                if (isdigit(c))
                        val |= c - '0';
-               else if (c >= 'a' && c <= 'f')
-                       val |= c - 'a' + 10;
-               else if (c >= 'A' && c <= 'F')
-                       val |= c - 'A' + 10;
-               else if (c == ':' || c == 0)
+               else if ((c|0x20) >= 'a' && (c|0x20) <= 'f')
+                       val |= (c|0x20) - ('a' - 10);
+               else if (c == ':' || c == '\0')
                        val >>= 4;
                else {
                        errno = EINVAL;
                        return -1;
                }
-               if (c != 0)
+               if (c != '\0')
                        bufp++;
                *ptr++ = (unsigned char) (val & 0377);
                i++;