diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-02 18:18:50 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-02 18:18:50 +0000 |
commit | 360d9661b6a33b0358104623058f1c3629a469ea (patch) | |
tree | 268954b686b38c96428e3b74fc1ebb2ebdfdfb32 | |
parent | 928b2c0fee65cae10f683ee0f1ea8d0a29a54924 (diff) | |
download | busybox-w32-360d9661b6a33b0358104623058f1c3629a469ea.tar.gz busybox-w32-360d9661b6a33b0358104623058f1c3629a469ea.tar.bz2 busybox-w32-360d9661b6a33b0358104623058f1c3629a469ea.zip |
libbb: add strncpy_IFNAMSIZ
function old new delta
...
udhcp_read_interface 225 220 -5
brctl_main 1151 1146 -5
add_interface 109 104 -5
ipaddr_list_or_flush 2174 2167 -7
do_add_ioctl 88 80 -8
vconfig_main 249 240 -9
do_del_ioctl 78 68 -10
do_iplink 1186 1173 -13
do_if_fetch 766 753 -13
buffer_fill_and_print 196 179 -17
parse_args 1709 1684 -25
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/20 up/down: 11/-140) Total: -129 bytes
-rw-r--r-- | e2fsprogs/old_e2fsprogs/uuid/gen_uuid.c | 2 | ||||
-rw-r--r-- | include/libbb.h | 1 | ||||
-rw-r--r-- | libbb/xfuncs.c | 8 | ||||
-rw-r--r-- | networking/arping.c | 2 | ||||
-rw-r--r-- | networking/brctl.c | 4 | ||||
-rw-r--r-- | networking/ether-wake.c | 4 | ||||
-rw-r--r-- | networking/ifconfig.c | 2 | ||||
-rw-r--r-- | networking/ifenslave.c | 5 | ||||
-rw-r--r-- | networking/interface.c | 22 | ||||
-rw-r--r-- | networking/libiproute/ipaddress.c | 2 | ||||
-rw-r--r-- | networking/libiproute/iplink.c | 14 | ||||
-rw-r--r-- | networking/libiproute/iptunnel.c | 21 | ||||
-rw-r--r-- | networking/libiproute/ll_map.c | 2 | ||||
-rw-r--r-- | networking/nameif.c | 2 | ||||
-rw-r--r-- | networking/route.c | 2 | ||||
-rw-r--r-- | networking/traceroute.c | 2 | ||||
-rw-r--r-- | networking/udhcp/socket.c | 2 | ||||
-rw-r--r-- | networking/vconfig.c | 2 | ||||
-rw-r--r-- | networking/zcip.c | 2 |
19 files changed, 52 insertions, 49 deletions
diff --git a/e2fsprogs/old_e2fsprogs/uuid/gen_uuid.c b/e2fsprogs/old_e2fsprogs/uuid/gen_uuid.c index 03a9f376a..4310c17db 100644 --- a/e2fsprogs/old_e2fsprogs/uuid/gen_uuid.c +++ b/e2fsprogs/old_e2fsprogs/uuid/gen_uuid.c | |||
@@ -165,7 +165,7 @@ static int get_node_id(unsigned char *node_id) | |||
165 | n = ifc.ifc_len; | 165 | n = ifc.ifc_len; |
166 | for (i = 0; i < n; i+= ifreq_size(*ifrp) ) { | 166 | for (i = 0; i < n; i+= ifreq_size(*ifrp) ) { |
167 | ifrp = (struct ifreq *)((char *) ifc.ifc_buf+i); | 167 | ifrp = (struct ifreq *)((char *) ifc.ifc_buf+i); |
168 | strncpy(ifr.ifr_name, ifrp->ifr_name, IFNAMSIZ); | 168 | strncpy_IFNAMSIZ(ifr.ifr_name, ifrp->ifr_name); |
169 | #ifdef SIOCGIFHWADDR | 169 | #ifdef SIOCGIFHWADDR |
170 | if (ioctl(sd, SIOCGIFHWADDR, &ifr) < 0) | 170 | if (ioctl(sd, SIOCGIFHWADDR, &ifr) < 0) |
171 | continue; | 171 | continue; |
diff --git a/include/libbb.h b/include/libbb.h index 77c4c6088..e4ccc7573 100644 --- a/include/libbb.h +++ b/include/libbb.h | |||
@@ -540,6 +540,7 @@ char *xstrdup(const char *s) FAST_FUNC; | |||
540 | char *xstrndup(const char *s, int n) FAST_FUNC; | 540 | char *xstrndup(const char *s, int n) FAST_FUNC; |
541 | void overlapping_strcpy(char *dst, const char *src) FAST_FUNC; | 541 | void overlapping_strcpy(char *dst, const char *src) FAST_FUNC; |
542 | char *safe_strncpy(char *dst, const char *src, size_t size) FAST_FUNC; | 542 | char *safe_strncpy(char *dst, const char *src, size_t size) FAST_FUNC; |
543 | char *strncpy_IFNAMSIZ(char *dst, const char *src) FAST_FUNC; | ||
543 | /* Guaranteed to NOT be a macro (smallest code). Saves nearly 2k on uclibc. | 544 | /* Guaranteed to NOT be a macro (smallest code). Saves nearly 2k on uclibc. |
544 | * But potentially slow, don't use in one-billion-times loops */ | 545 | * But potentially slow, don't use in one-billion-times loops */ |
545 | int bb_putchar(int ch) FAST_FUNC; | 546 | int bb_putchar(int ch) FAST_FUNC; |
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c index e2aee136c..f3c3c538c 100644 --- a/libbb/xfuncs.c +++ b/libbb/xfuncs.c | |||
@@ -40,6 +40,14 @@ int FAST_FUNC close_on_exec_on(int fd) | |||
40 | return fcntl(fd, F_SETFD, FD_CLOEXEC); | 40 | return fcntl(fd, F_SETFD, FD_CLOEXEC); |
41 | } | 41 | } |
42 | 42 | ||
43 | char* FAST_FUNC strncpy_IFNAMSIZ(char *dst, const char *src) | ||
44 | { | ||
45 | #ifndef IFNAMSIZ | ||
46 | enum { IFNAMSIZ = 16 }; | ||
47 | #endif | ||
48 | return strncpy(dst, src, IFNAMSIZ); | ||
49 | } | ||
50 | |||
43 | /* Convert unsigned long long value into compact 4-char | 51 | /* Convert unsigned long long value into compact 4-char |
44 | * representation. Examples: "1234", "1.2k", " 27M", "123T" | 52 | * representation. Examples: "1234", "1.2k", " 27M", "123T" |
45 | * String is not terminated (buf[4] is untouched) */ | 53 | * String is not terminated (buf[4] is untouched) */ |
diff --git a/networking/arping.c b/networking/arping.c index aba32b869..e4429973b 100644 --- a/networking/arping.c +++ b/networking/arping.c | |||
@@ -286,7 +286,7 @@ int arping_main(int argc UNUSED_PARAM, char **argv) | |||
286 | struct ifreq ifr; | 286 | struct ifreq ifr; |
287 | 287 | ||
288 | memset(&ifr, 0, sizeof(ifr)); | 288 | memset(&ifr, 0, sizeof(ifr)); |
289 | strncpy(ifr.ifr_name, device, sizeof(ifr.ifr_name) - 1); | 289 | strncpy_IFNAMSIZ(ifr.ifr_name, device); |
290 | /* We use ifr.ifr_name in error msg so that problem | 290 | /* We use ifr.ifr_name in error msg so that problem |
291 | * with truncated name will be visible */ | 291 | * with truncated name will be visible */ |
292 | ioctl_or_perror_and_die(sock_fd, SIOCGIFINDEX, &ifr, err_str, "not found"); | 292 | ioctl_or_perror_and_die(sock_fd, SIOCGIFINDEX, &ifr, err_str, "not found"); |
diff --git a/networking/brctl.c b/networking/brctl.c index 847517961..69e3c869c 100644 --- a/networking/brctl.c +++ b/networking/brctl.c | |||
@@ -137,7 +137,7 @@ int brctl_main(int argc UNUSED_PARAM, char **argv) | |||
137 | 137 | ||
138 | if (!if_indextoname(bridx[i], brname)) | 138 | if (!if_indextoname(bridx[i], brname)) |
139 | bb_perror_msg_and_die("can't get bridge name for index %d", i); | 139 | bb_perror_msg_and_die("can't get bridge name for index %d", i); |
140 | strncpy(ifr.ifr_name, brname, IFNAMSIZ); | 140 | strncpy_IFNAMSIZ(ifr.ifr_name, brname); |
141 | 141 | ||
142 | arm_ioctl(args, BRCTL_GET_BRIDGE_INFO, | 142 | arm_ioctl(args, BRCTL_GET_BRIDGE_INFO, |
143 | (unsigned long) &bi, 0); | 143 | (unsigned long) &bi, 0); |
@@ -191,7 +191,7 @@ int brctl_main(int argc UNUSED_PARAM, char **argv) | |||
191 | if (!*argv) /* all but 'addif/delif' need at least two arguments */ | 191 | if (!*argv) /* all but 'addif/delif' need at least two arguments */ |
192 | bb_show_usage(); | 192 | bb_show_usage(); |
193 | 193 | ||
194 | strncpy(ifr.ifr_name, br, IFNAMSIZ); | 194 | strncpy_IFNAMSIZ(ifr.ifr_name, br); |
195 | if (key == ARG_addif || key == ARG_delif) { /* addif or delif */ | 195 | if (key == ARG_addif || key == ARG_delif) { /* addif or delif */ |
196 | brif = *argv; | 196 | brif = *argv; |
197 | ifr.ifr_ifindex = if_nametoindex(brif); | 197 | ifr.ifr_ifindex = if_nametoindex(brif); |
diff --git a/networking/ether-wake.c b/networking/ether-wake.c index a37b6eb79..882429d1a 100644 --- a/networking/ether-wake.c +++ b/networking/ether-wake.c | |||
@@ -219,7 +219,7 @@ int ether_wake_main(int argc UNUSED_PARAM, char **argv) | |||
219 | { | 219 | { |
220 | struct ifreq if_hwaddr; | 220 | struct ifreq if_hwaddr; |
221 | 221 | ||
222 | strncpy(if_hwaddr.ifr_name, ifname, sizeof(if_hwaddr.ifr_name)); | 222 | strncpy_IFNAMSIZ(if_hwaddr.ifr_name, ifname); |
223 | ioctl_or_perror_and_die(s, SIOCGIFHWADDR, &if_hwaddr, "SIOCGIFHWADDR on %s failed", ifname); | 223 | ioctl_or_perror_and_die(s, SIOCGIFHWADDR, &if_hwaddr, "SIOCGIFHWADDR on %s failed", ifname); |
224 | 224 | ||
225 | memcpy(outpack+6, if_hwaddr.ifr_hwaddr.sa_data, 6); | 225 | memcpy(outpack+6, if_hwaddr.ifr_hwaddr.sa_data, 6); |
@@ -255,7 +255,7 @@ int ether_wake_main(int argc UNUSED_PARAM, char **argv) | |||
255 | #if defined(PF_PACKET) | 255 | #if defined(PF_PACKET) |
256 | { | 256 | { |
257 | struct ifreq ifr; | 257 | struct ifreq ifr; |
258 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 258 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
259 | xioctl(s, SIOCGIFINDEX, &ifr); | 259 | xioctl(s, SIOCGIFINDEX, &ifr); |
260 | memset(&whereto, 0, sizeof(whereto)); | 260 | memset(&whereto, 0, sizeof(whereto)); |
261 | whereto.sll_family = AF_PACKET; | 261 | whereto.sll_family = AF_PACKET; |
diff --git a/networking/ifconfig.c b/networking/ifconfig.c index e999741d1..22b1682bc 100644 --- a/networking/ifconfig.c +++ b/networking/ifconfig.c | |||
@@ -313,7 +313,7 @@ int ifconfig_main(int argc, char **argv) | |||
313 | sockfd = xsocket(AF_INET, SOCK_DGRAM, 0); | 313 | sockfd = xsocket(AF_INET, SOCK_DGRAM, 0); |
314 | 314 | ||
315 | /* get interface name */ | 315 | /* get interface name */ |
316 | strncpy(ifr.ifr_name, *argv, IFNAMSIZ); | 316 | strncpy_IFNAMSIZ(ifr.ifr_name, *argv); |
317 | 317 | ||
318 | /* Process the remaining arguments. */ | 318 | /* Process the remaining arguments. */ |
319 | while (*++argv != (char *) NULL) { | 319 | while (*++argv != (char *) NULL) { |
diff --git a/networking/ifenslave.c b/networking/ifenslave.c index ae9745726..fa226425a 100644 --- a/networking/ifenslave.c +++ b/networking/ifenslave.c | |||
@@ -140,11 +140,6 @@ struct globals { | |||
140 | 140 | ||
141 | /* NOINLINEs are placed where it results in smaller code (gcc 4.3.1) */ | 141 | /* NOINLINEs are placed where it results in smaller code (gcc 4.3.1) */ |
142 | 142 | ||
143 | static void strncpy_IFNAMSIZ(char *dst, const char *src) | ||
144 | { | ||
145 | strncpy(dst, src, IFNAMSIZ); | ||
146 | } | ||
147 | |||
148 | static int ioctl_on_skfd(unsigned request, struct ifreq *ifr) | 143 | static int ioctl_on_skfd(unsigned request, struct ifreq *ifr) |
149 | { | 144 | { |
150 | return ioctl(skfd, request, ifr); | 145 | return ioctl(skfd, request, ifr); |
diff --git a/networking/interface.c b/networking/interface.c index 00174d496..ef187be1a 100644 --- a/networking/interface.c +++ b/networking/interface.c | |||
@@ -395,7 +395,7 @@ static struct interface *add_interface(char *name) | |||
395 | } | 395 | } |
396 | 396 | ||
397 | new = xzalloc(sizeof(*new)); | 397 | new = xzalloc(sizeof(*new)); |
398 | strncpy(new->name, name, IFNAMSIZ); | 398 | strncpy_IFNAMSIZ(new->name, name); |
399 | nextp = ife ? &ife->next : &int_list; | 399 | nextp = ife ? &ife->next : &int_list; |
400 | new->prev = ife; | 400 | new->prev = ife; |
401 | new->next = *nextp; | 401 | new->next = *nextp; |
@@ -614,39 +614,39 @@ static int if_fetch(struct interface *ife) | |||
614 | 614 | ||
615 | skfd = xsocket(AF_INET, SOCK_DGRAM, 0); | 615 | skfd = xsocket(AF_INET, SOCK_DGRAM, 0); |
616 | 616 | ||
617 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 617 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
618 | if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) { | 618 | if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) { |
619 | close(skfd); | 619 | close(skfd); |
620 | return -1; | 620 | return -1; |
621 | } | 621 | } |
622 | ife->flags = ifr.ifr_flags; | 622 | ife->flags = ifr.ifr_flags; |
623 | 623 | ||
624 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 624 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
625 | memset(ife->hwaddr, 0, 32); | 625 | memset(ife->hwaddr, 0, 32); |
626 | if (ioctl(skfd, SIOCGIFHWADDR, &ifr) >= 0) | 626 | if (ioctl(skfd, SIOCGIFHWADDR, &ifr) >= 0) |
627 | memcpy(ife->hwaddr, ifr.ifr_hwaddr.sa_data, 8); | 627 | memcpy(ife->hwaddr, ifr.ifr_hwaddr.sa_data, 8); |
628 | 628 | ||
629 | ife->type = ifr.ifr_hwaddr.sa_family; | 629 | ife->type = ifr.ifr_hwaddr.sa_family; |
630 | 630 | ||
631 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 631 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
632 | ife->metric = 0; | 632 | ife->metric = 0; |
633 | if (ioctl(skfd, SIOCGIFMETRIC, &ifr) >= 0) | 633 | if (ioctl(skfd, SIOCGIFMETRIC, &ifr) >= 0) |
634 | ife->metric = ifr.ifr_metric; | 634 | ife->metric = ifr.ifr_metric; |
635 | 635 | ||
636 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 636 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
637 | ife->mtu = 0; | 637 | ife->mtu = 0; |
638 | if (ioctl(skfd, SIOCGIFMTU, &ifr) >= 0) | 638 | if (ioctl(skfd, SIOCGIFMTU, &ifr) >= 0) |
639 | ife->mtu = ifr.ifr_mtu; | 639 | ife->mtu = ifr.ifr_mtu; |
640 | 640 | ||
641 | memset(&ife->map, 0, sizeof(struct ifmap)); | 641 | memset(&ife->map, 0, sizeof(struct ifmap)); |
642 | #ifdef SIOCGIFMAP | 642 | #ifdef SIOCGIFMAP |
643 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 643 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
644 | if (ioctl(skfd, SIOCGIFMAP, &ifr) == 0) | 644 | if (ioctl(skfd, SIOCGIFMAP, &ifr) == 0) |
645 | ife->map = ifr.ifr_map; | 645 | ife->map = ifr.ifr_map; |
646 | #endif | 646 | #endif |
647 | 647 | ||
648 | #ifdef HAVE_TXQUEUELEN | 648 | #ifdef HAVE_TXQUEUELEN |
649 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 649 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
650 | ife->tx_queue_len = -1; /* unknown value */ | 650 | ife->tx_queue_len = -1; /* unknown value */ |
651 | if (ioctl(skfd, SIOCGIFTXQLEN, &ifr) >= 0) | 651 | if (ioctl(skfd, SIOCGIFTXQLEN, &ifr) >= 0) |
652 | ife->tx_queue_len = ifr.ifr_qlen; | 652 | ife->tx_queue_len = ifr.ifr_qlen; |
@@ -654,23 +654,23 @@ static int if_fetch(struct interface *ife) | |||
654 | ife->tx_queue_len = -1; /* unknown value */ | 654 | ife->tx_queue_len = -1; /* unknown value */ |
655 | #endif | 655 | #endif |
656 | 656 | ||
657 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 657 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
658 | ifr.ifr_addr.sa_family = AF_INET; | 658 | ifr.ifr_addr.sa_family = AF_INET; |
659 | memset(&ife->addr, 0, sizeof(struct sockaddr)); | 659 | memset(&ife->addr, 0, sizeof(struct sockaddr)); |
660 | if (ioctl(skfd, SIOCGIFADDR, &ifr) == 0) { | 660 | if (ioctl(skfd, SIOCGIFADDR, &ifr) == 0) { |
661 | ife->has_ip = 1; | 661 | ife->has_ip = 1; |
662 | ife->addr = ifr.ifr_addr; | 662 | ife->addr = ifr.ifr_addr; |
663 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 663 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
664 | memset(&ife->dstaddr, 0, sizeof(struct sockaddr)); | 664 | memset(&ife->dstaddr, 0, sizeof(struct sockaddr)); |
665 | if (ioctl(skfd, SIOCGIFDSTADDR, &ifr) >= 0) | 665 | if (ioctl(skfd, SIOCGIFDSTADDR, &ifr) >= 0) |
666 | ife->dstaddr = ifr.ifr_dstaddr; | 666 | ife->dstaddr = ifr.ifr_dstaddr; |
667 | 667 | ||
668 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 668 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
669 | memset(&ife->broadaddr, 0, sizeof(struct sockaddr)); | 669 | memset(&ife->broadaddr, 0, sizeof(struct sockaddr)); |
670 | if (ioctl(skfd, SIOCGIFBRDADDR, &ifr) >= 0) | 670 | if (ioctl(skfd, SIOCGIFBRDADDR, &ifr) >= 0) |
671 | ife->broadaddr = ifr.ifr_broadaddr; | 671 | ife->broadaddr = ifr.ifr_broadaddr; |
672 | 672 | ||
673 | strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); | 673 | strncpy_IFNAMSIZ(ifr.ifr_name, ifname); |
674 | memset(&ife->netmask, 0, sizeof(struct sockaddr)); | 674 | memset(&ife->netmask, 0, sizeof(struct sockaddr)); |
675 | if (ioctl(skfd, SIOCGIFNETMASK, &ifr) >= 0) | 675 | if (ioctl(skfd, SIOCGIFNETMASK, &ifr) >= 0) |
676 | ife->netmask = ifr.ifr_netmask; | 676 | ife->netmask = ifr.ifr_netmask; |
diff --git a/networking/libiproute/ipaddress.c b/networking/libiproute/ipaddress.c index 288dccae7..fadab6f39 100644 --- a/networking/libiproute/ipaddress.c +++ b/networking/libiproute/ipaddress.c | |||
@@ -83,7 +83,7 @@ static void print_queuelen(char *name) | |||
83 | return; | 83 | return; |
84 | 84 | ||
85 | memset(&ifr, 0, sizeof(ifr)); | 85 | memset(&ifr, 0, sizeof(ifr)); |
86 | strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); | 86 | strncpy_IFNAMSIZ(ifr.ifr_name, name); |
87 | if (ioctl_or_warn(s, SIOCGIFTXQLEN, &ifr) < 0) { | 87 | if (ioctl_or_warn(s, SIOCGIFTXQLEN, &ifr) < 0) { |
88 | close(s); | 88 | close(s); |
89 | return; | 89 | return; |
diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c index 8de17bfc6..d3d0338b0 100644 --- a/networking/libiproute/iplink.c +++ b/networking/libiproute/iplink.c | |||
@@ -41,7 +41,7 @@ static void do_chflags(char *dev, uint32_t flags, uint32_t mask) | |||
41 | struct ifreq ifr; | 41 | struct ifreq ifr; |
42 | int fd; | 42 | int fd; |
43 | 43 | ||
44 | strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); | 44 | strncpy_IFNAMSIZ(ifr.ifr_name, dev); |
45 | fd = get_ctl_fd(); | 45 | fd = get_ctl_fd(); |
46 | xioctl(fd, SIOCGIFFLAGS, &ifr); | 46 | xioctl(fd, SIOCGIFFLAGS, &ifr); |
47 | if ((ifr.ifr_flags ^ flags) & mask) { | 47 | if ((ifr.ifr_flags ^ flags) & mask) { |
@@ -58,8 +58,8 @@ static void do_changename(char *dev, char *newdev) | |||
58 | struct ifreq ifr; | 58 | struct ifreq ifr; |
59 | int fd; | 59 | int fd; |
60 | 60 | ||
61 | strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); | 61 | strncpy_IFNAMSIZ(ifr.ifr_name, dev); |
62 | strncpy(ifr.ifr_newname, newdev, sizeof(ifr.ifr_newname)); | 62 | strncpy_IFNAMSIZ(ifr.ifr_newname, newdev); |
63 | fd = get_ctl_fd(); | 63 | fd = get_ctl_fd(); |
64 | xioctl(fd, SIOCSIFNAME, &ifr); | 64 | xioctl(fd, SIOCSIFNAME, &ifr); |
65 | close(fd); | 65 | close(fd); |
@@ -73,7 +73,7 @@ static void set_qlen(char *dev, int qlen) | |||
73 | 73 | ||
74 | s = get_ctl_fd(); | 74 | s = get_ctl_fd(); |
75 | memset(&ifr, 0, sizeof(ifr)); | 75 | memset(&ifr, 0, sizeof(ifr)); |
76 | strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); | 76 | strncpy_IFNAMSIZ(ifr.ifr_name, dev); |
77 | ifr.ifr_qlen = qlen; | 77 | ifr.ifr_qlen = qlen; |
78 | xioctl(s, SIOCSIFTXQLEN, &ifr); | 78 | xioctl(s, SIOCSIFTXQLEN, &ifr); |
79 | close(s); | 79 | close(s); |
@@ -87,7 +87,7 @@ static void set_mtu(char *dev, int mtu) | |||
87 | 87 | ||
88 | s = get_ctl_fd(); | 88 | s = get_ctl_fd(); |
89 | memset(&ifr, 0, sizeof(ifr)); | 89 | memset(&ifr, 0, sizeof(ifr)); |
90 | strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); | 90 | strncpy_IFNAMSIZ(ifr.ifr_name, dev); |
91 | ifr.ifr_mtu = mtu; | 91 | ifr.ifr_mtu = mtu; |
92 | xioctl(s, SIOCSIFMTU, &ifr); | 92 | xioctl(s, SIOCSIFMTU, &ifr); |
93 | close(s); | 93 | close(s); |
@@ -104,7 +104,7 @@ static int get_address(char *dev, int *htype) | |||
104 | s = xsocket(PF_PACKET, SOCK_DGRAM, 0); | 104 | s = xsocket(PF_PACKET, SOCK_DGRAM, 0); |
105 | 105 | ||
106 | memset(&ifr, 0, sizeof(ifr)); | 106 | memset(&ifr, 0, sizeof(ifr)); |
107 | strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); | 107 | strncpy_IFNAMSIZ(ifr.ifr_name, dev); |
108 | xioctl(s, SIOCGIFINDEX, &ifr); | 108 | xioctl(s, SIOCGIFINDEX, &ifr); |
109 | 109 | ||
110 | memset(&me, 0, sizeof(me)); | 110 | memset(&me, 0, sizeof(me)); |
@@ -128,7 +128,7 @@ static void parse_address(char *dev, int hatype, int halen, char *lla, struct if | |||
128 | int alen; | 128 | int alen; |
129 | 129 | ||
130 | memset(ifr, 0, sizeof(*ifr)); | 130 | memset(ifr, 0, sizeof(*ifr)); |
131 | strncpy(ifr->ifr_name, dev, sizeof(ifr->ifr_name)); | 131 | strncpy_IFNAMSIZ(ifr->ifr_name, dev); |
132 | ifr->ifr_hwaddr.sa_family = hatype; | 132 | ifr->ifr_hwaddr.sa_family = hatype; |
133 | 133 | ||
134 | alen = hatype == 1/*ARPHRD_ETHER*/ ? 14/*ETH_HLEN*/ : 19/*INFINIBAND_HLEN*/; | 134 | alen = hatype == 1/*ARPHRD_ETHER*/ ? 14/*ETH_HLEN*/ : 19/*INFINIBAND_HLEN*/; |
diff --git a/networking/libiproute/iptunnel.c b/networking/libiproute/iptunnel.c index 65c27f936..ab4d65bd4 100644 --- a/networking/libiproute/iptunnel.c +++ b/networking/libiproute/iptunnel.c | |||
@@ -34,7 +34,7 @@ static int do_ioctl_get_ifindex(char *dev) | |||
34 | struct ifreq ifr; | 34 | struct ifreq ifr; |
35 | int fd; | 35 | int fd; |
36 | 36 | ||
37 | strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); | 37 | strncpy_IFNAMSIZ(ifr.ifr_name, dev); |
38 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); | 38 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); |
39 | xioctl(fd, SIOCGIFINDEX, &ifr); | 39 | xioctl(fd, SIOCGIFINDEX, &ifr); |
40 | close(fd); | 40 | close(fd); |
@@ -47,7 +47,7 @@ static int do_ioctl_get_iftype(char *dev) | |||
47 | int fd; | 47 | int fd; |
48 | int err; | 48 | int err; |
49 | 49 | ||
50 | strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name)); | 50 | strncpy_IFNAMSIZ(ifr.ifr_name, dev); |
51 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); | 51 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); |
52 | err = ioctl_or_warn(fd, SIOCGIFHWADDR, &ifr); | 52 | err = ioctl_or_warn(fd, SIOCGIFHWADDR, &ifr); |
53 | close(fd); | 53 | close(fd); |
@@ -73,7 +73,7 @@ static int do_get_ioctl(const char *basedev, struct ip_tunnel_parm *p) | |||
73 | int fd; | 73 | int fd; |
74 | int err; | 74 | int err; |
75 | 75 | ||
76 | strncpy(ifr.ifr_name, basedev, sizeof(ifr.ifr_name)); | 76 | strncpy_IFNAMSIZ(ifr.ifr_name, basedev); |
77 | ifr.ifr_ifru.ifru_data = (void*)p; | 77 | ifr.ifr_ifru.ifru_data = (void*)p; |
78 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); | 78 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); |
79 | err = ioctl_or_warn(fd, SIOCGETTUNNEL, &ifr); | 79 | err = ioctl_or_warn(fd, SIOCGETTUNNEL, &ifr); |
@@ -88,9 +88,9 @@ static int do_add_ioctl(int cmd, const char *basedev, struct ip_tunnel_parm *p) | |||
88 | int fd; | 88 | int fd; |
89 | 89 | ||
90 | if (cmd == SIOCCHGTUNNEL && p->name[0]) { | 90 | if (cmd == SIOCCHGTUNNEL && p->name[0]) { |
91 | strncpy(ifr.ifr_name, p->name, sizeof(ifr.ifr_name)); | 91 | strncpy_IFNAMSIZ(ifr.ifr_name, p->name); |
92 | } else { | 92 | } else { |
93 | strncpy(ifr.ifr_name, basedev, sizeof(ifr.ifr_name)); | 93 | strncpy_IFNAMSIZ(ifr.ifr_name, basedev); |
94 | } | 94 | } |
95 | ifr.ifr_ifru.ifru_data = (void*)p; | 95 | ifr.ifr_ifru.ifru_data = (void*)p; |
96 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); | 96 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); |
@@ -114,9 +114,9 @@ static int do_del_ioctl(const char *basedev, struct ip_tunnel_parm *p) | |||
114 | int fd; | 114 | int fd; |
115 | 115 | ||
116 | if (p->name[0]) { | 116 | if (p->name[0]) { |
117 | strncpy(ifr.ifr_name, p->name, sizeof(ifr.ifr_name)); | 117 | strncpy_IFNAMSIZ(ifr.ifr_name, p->name); |
118 | } else { | 118 | } else { |
119 | strncpy(ifr.ifr_name, basedev, sizeof(ifr.ifr_name)); | 119 | strncpy_IFNAMSIZ(ifr.ifr_name, basedev); |
120 | } | 120 | } |
121 | ifr.ifr_ifru.ifru_data = (void*)p; | 121 | ifr.ifr_ifru.ifru_data = (void*)p; |
122 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); | 122 | fd = xsocket(AF_INET, SOCK_DGRAM, 0); |
@@ -148,7 +148,7 @@ static void parse_args(char **argv, int cmd, struct ip_tunnel_parm *p) | |||
148 | int key; | 148 | int key; |
149 | 149 | ||
150 | memset(p, 0, sizeof(*p)); | 150 | memset(p, 0, sizeof(*p)); |
151 | memset(&medium, 0, sizeof(medium)); | 151 | medium[0] = '\0'; |
152 | 152 | ||
153 | p->iph.version = 4; | 153 | p->iph.version = 4; |
154 | p->iph.ihl = 5; | 154 | p->iph.ihl = 5; |
@@ -250,7 +250,7 @@ static void parse_args(char **argv, int cmd, struct ip_tunnel_parm *p) | |||
250 | p->iph.saddr = get_addr32(*argv); | 250 | p->iph.saddr = get_addr32(*argv); |
251 | } else if (key == ARG_dev) { | 251 | } else if (key == ARG_dev) { |
252 | NEXT_ARG(); | 252 | NEXT_ARG(); |
253 | strncpy(medium, *argv, IFNAMSIZ-1); | 253 | strncpy_IFNAMSIZ(medium, *argv); |
254 | } else if (key == ARG_ttl) { | 254 | } else if (key == ARG_ttl) { |
255 | unsigned uval; | 255 | unsigned uval; |
256 | NEXT_ARG(); | 256 | NEXT_ARG(); |
@@ -279,7 +279,7 @@ static void parse_args(char **argv, int cmd, struct ip_tunnel_parm *p) | |||
279 | } | 279 | } |
280 | if (p->name[0]) | 280 | if (p->name[0]) |
281 | duparg2("name", *argv); | 281 | duparg2("name", *argv); |
282 | strncpy(p->name, *argv, IFNAMSIZ); | 282 | strncpy_IFNAMSIZ(p->name, *argv); |
283 | if (cmd == SIOCCHGTUNNEL && count == 0) { | 283 | if (cmd == SIOCCHGTUNNEL && count == 0) { |
284 | struct ip_tunnel_parm old_p; | 284 | struct ip_tunnel_parm old_p; |
285 | memset(&old_p, 0, sizeof(old_p)); | 285 | memset(&old_p, 0, sizeof(old_p)); |
@@ -324,7 +324,6 @@ static void parse_args(char **argv, int cmd, struct ip_tunnel_parm *p) | |||
324 | } | 324 | } |
325 | } | 325 | } |
326 | 326 | ||
327 | |||
328 | /* Return value becomes exitcode. It's okay to not return at all */ | 327 | /* Return value becomes exitcode. It's okay to not return at all */ |
329 | static int do_add(int cmd, char **argv) | 328 | static int do_add(int cmd, char **argv) |
330 | { | 329 | { |
diff --git a/networking/libiproute/ll_map.c b/networking/libiproute/ll_map.c index eeae4e252..3412dc763 100644 --- a/networking/libiproute/ll_map.c +++ b/networking/libiproute/ll_map.c | |||
@@ -176,7 +176,7 @@ int xll_name_to_index(const char *const name) | |||
176 | struct ifreq ifr; | 176 | struct ifreq ifr; |
177 | int tmp; | 177 | int tmp; |
178 | 178 | ||
179 | strncpy(ifr.ifr_name, name, IFNAMSIZ); | 179 | strncpy_IFNAMSIZ(ifr.ifr_name, name); |
180 | ifr.ifr_ifindex = -1; | 180 | ifr.ifr_ifindex = -1; |
181 | tmp = ioctl(sock_fd, SIOCGIFINDEX, &ifr); | 181 | tmp = ioctl(sock_fd, SIOCGIFINDEX, &ifr); |
182 | close(sock_fd); | 182 | close(sock_fd); |
diff --git a/networking/nameif.c b/networking/nameif.c index 75829fac3..4d68c8d63 100644 --- a/networking/nameif.c +++ b/networking/nameif.c | |||
@@ -177,7 +177,7 @@ int nameif_main(int argc, char **argv) | |||
177 | 177 | ||
178 | /* Find the current interface name and copy it to ifr.ifr_name */ | 178 | /* Find the current interface name and copy it to ifr.ifr_name */ |
179 | memset(&ifr, 0, sizeof(struct ifreq)); | 179 | memset(&ifr, 0, sizeof(struct ifreq)); |
180 | strncpy(ifr.ifr_name, token[0], sizeof(ifr.ifr_name)); | 180 | strncpy_IFNAMSIZ(ifr.ifr_name, token[0]); |
181 | 181 | ||
182 | #if ENABLE_FEATURE_NAMEIF_EXTENDED | 182 | #if ENABLE_FEATURE_NAMEIF_EXTENDED |
183 | /* Check for driver etc. */ | 183 | /* Check for driver etc. */ |
diff --git a/networking/route.c b/networking/route.c index 8778ecd38..5d2540802 100644 --- a/networking/route.c +++ b/networking/route.c | |||
@@ -423,7 +423,7 @@ static void INET6_setroute(int action, char **args) | |||
423 | if (devname) { | 423 | if (devname) { |
424 | struct ifreq ifr; | 424 | struct ifreq ifr; |
425 | memset(&ifr, 0, sizeof(ifr)); | 425 | memset(&ifr, 0, sizeof(ifr)); |
426 | strncpy(ifr.ifr_name, devname, sizeof(ifr.ifr_name)); | 426 | strncpy_IFNAMSIZ(ifr.ifr_name, devname); |
427 | xioctl(skfd, SIOGIFINDEX, &ifr); | 427 | xioctl(skfd, SIOGIFINDEX, &ifr); |
428 | rt.rtmsg_ifindex = ifr.ifr_ifindex; | 428 | rt.rtmsg_ifindex = ifr.ifr_ifindex; |
429 | } | 429 | } |
diff --git a/networking/traceroute.c b/networking/traceroute.c index 29cebfa61..5d1baacf5 100644 --- a/networking/traceroute.c +++ b/networking/traceroute.c | |||
@@ -447,7 +447,7 @@ ifaddrlist(struct IFADDRLIST **ipaddrp) | |||
447 | * SIOCGIFFLAGS stomps over it because the requests | 447 | * SIOCGIFFLAGS stomps over it because the requests |
448 | * are returned in a union.) | 448 | * are returned in a union.) |
449 | */ | 449 | */ |
450 | strncpy(ifr.ifr_name, ifrp->ifr_name, sizeof(ifr.ifr_name)); | 450 | strncpy_IFNAMSIZ(ifr.ifr_name, ifrp->ifr_name); |
451 | if (ioctl(fd, SIOCGIFFLAGS, (char *)&ifr) < 0) { | 451 | if (ioctl(fd, SIOCGIFFLAGS, (char *)&ifr) < 0) { |
452 | if (errno == ENXIO) | 452 | if (errno == ENXIO) |
453 | continue; | 453 | continue; |
diff --git a/networking/udhcp/socket.c b/networking/udhcp/socket.c index ea0a2c3a8..857f0a4de 100644 --- a/networking/udhcp/socket.c +++ b/networking/udhcp/socket.c | |||
@@ -47,7 +47,7 @@ int FAST_FUNC udhcp_read_interface(const char *interface, int *ifindex, uint32_t | |||
47 | fd = xsocket(AF_INET, SOCK_RAW, IPPROTO_RAW); | 47 | fd = xsocket(AF_INET, SOCK_RAW, IPPROTO_RAW); |
48 | 48 | ||
49 | ifr.ifr_addr.sa_family = AF_INET; | 49 | ifr.ifr_addr.sa_family = AF_INET; |
50 | strncpy(ifr.ifr_name, interface, sizeof(ifr.ifr_name)); | 50 | strncpy_IFNAMSIZ(ifr.ifr_name, interface); |
51 | if (addr) { | 51 | if (addr) { |
52 | if (ioctl_or_perror(fd, SIOCGIFADDR, &ifr, | 52 | if (ioctl_or_perror(fd, SIOCGIFADDR, &ifr, |
53 | "is interface %s up and configured?", interface) | 53 | "is interface %s up and configured?", interface) |
diff --git a/networking/vconfig.c b/networking/vconfig.c index 3f12e7609..69c729a14 100644 --- a/networking/vconfig.c +++ b/networking/vconfig.c | |||
@@ -133,7 +133,7 @@ int vconfig_main(int argc, char **argv) | |||
133 | if (ifr.cmd == SET_VLAN_NAME_TYPE_CMD) { /* set_name_type */ | 133 | if (ifr.cmd == SET_VLAN_NAME_TYPE_CMD) { /* set_name_type */ |
134 | ifr.u.name_type = *xfind_str(name_types+1, argv[1]); | 134 | ifr.u.name_type = *xfind_str(name_types+1, argv[1]); |
135 | } else { | 135 | } else { |
136 | strncpy(ifr.device1, argv[1], IFNAMSIZ); | 136 | strncpy_IFNAMSIZ(ifr.device1, argv[1]); |
137 | p = argv[2]; | 137 | p = argv[2]; |
138 | 138 | ||
139 | /* I suppose one could try to combine some of the function calls below, | 139 | /* I suppose one could try to combine some of the function calls below, |
diff --git a/networking/zcip.c b/networking/zcip.c index ff9c83dc7..3a349a5af 100644 --- a/networking/zcip.c +++ b/networking/zcip.c | |||
@@ -268,7 +268,7 @@ int zcip_main(int argc, char **argv) | |||
268 | 268 | ||
269 | // get the interface's ethernet address | 269 | // get the interface's ethernet address |
270 | //memset(&ifr, 0, sizeof(ifr)); | 270 | //memset(&ifr, 0, sizeof(ifr)); |
271 | strncpy(ifr.ifr_name, argv_intf, sizeof(ifr.ifr_name)); | 271 | strncpy_IFNAMSIZ(ifr.ifr_name, argv_intf); |
272 | xioctl(sock_fd, SIOCGIFHWADDR, &ifr); | 272 | xioctl(sock_fd, SIOCGIFHWADDR, &ifr); |
273 | memcpy(ð_addr, &ifr.ifr_hwaddr.sa_data, ETH_ALEN); | 273 | memcpy(ð_addr, &ifr.ifr_hwaddr.sa_data, ETH_ALEN); |
274 | 274 | ||