--- trunk/mkinitrd-magellan/busybox/networking/libiproute/iplink.c 2010/04/29 20:38:48 983 +++ trunk/mkinitrd-magellan/busybox/networking/libiproute/iplink.c 2010/05/30 11:32:42 984 @@ -41,7 +41,7 @@ struct ifreq ifr; int fd; - strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); + strncpy_IFNAMSIZ(ifr.ifr_name, dev); fd = get_ctl_fd(); xioctl(fd, SIOCGIFFLAGS, &ifr); if ((ifr.ifr_flags ^ flags) & mask) { @@ -58,8 +58,8 @@ struct ifreq ifr; int fd; - strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); - strncpy(ifr.ifr_newname, newdev, sizeof(ifr.ifr_newname)); + strncpy_IFNAMSIZ(ifr.ifr_name, dev); + strncpy_IFNAMSIZ(ifr.ifr_newname, newdev); fd = get_ctl_fd(); xioctl(fd, SIOCSIFNAME, &ifr); close(fd); @@ -73,7 +73,7 @@ s = get_ctl_fd(); memset(&ifr, 0, sizeof(ifr)); - strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); + strncpy_IFNAMSIZ(ifr.ifr_name, dev); ifr.ifr_qlen = qlen; xioctl(s, SIOCSIFTXQLEN, &ifr); close(s); @@ -87,7 +87,7 @@ s = get_ctl_fd(); memset(&ifr, 0, sizeof(ifr)); - strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); + strncpy_IFNAMSIZ(ifr.ifr_name, dev); ifr.ifr_mtu = mtu; xioctl(s, SIOCSIFMTU, &ifr); close(s); @@ -104,7 +104,7 @@ s = xsocket(PF_PACKET, SOCK_DGRAM, 0); memset(&ifr, 0, sizeof(ifr)); - strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); + strncpy_IFNAMSIZ(ifr.ifr_name, dev); xioctl(s, SIOCGIFINDEX, &ifr); memset(&me, 0, sizeof(me)); @@ -112,11 +112,11 @@ me.sll_ifindex = ifr.ifr_ifindex; me.sll_protocol = htons(ETH_P_LOOP); xbind(s, (struct sockaddr*)&me, sizeof(me)); - alen = sizeof(me); - if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) { - bb_perror_msg_and_die("getsockname"); - } + getsockname(s, (struct sockaddr*)&me, &alen); + //never happens: + //if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) + // bb_perror_msg_and_die("getsockname"); close(s); *htype = me.sll_hatype; return me.sll_halen; @@ -128,7 +128,7 @@ int alen; memset(ifr, 0, sizeof(*ifr)); - strncpy(ifr->ifr_name, dev, sizeof(ifr->ifr_name)); + strncpy_IFNAMSIZ(ifr->ifr_name, dev); ifr->ifr_hwaddr.sa_family = hatype; alen = hatype == 1/*ARPHRD_ETHER*/ ? 14/*ETH_HLEN*/ : 19/*INFINIBAND_HLEN*/; @@ -202,8 +202,7 @@ NEXT_ARG(); if (mtu != -1) duparg("mtu", *argv); - if (get_integer(&mtu, *argv, 0)) - invarg(*argv, "mtu"); + mtu = get_unsigned(*argv, "mtu"); } if (key == ARG_multicast) { int param;