From ee10198a39b9363f3ff122769e8391f4b50d2074 Mon Sep 17 00:00:00 2001 From: Sven Schmitt Date: Thu, 25 Jun 2015 10:34:04 +0200 Subject: [PATCH] replaced ifr by simple char if_name[IFNAMSIZ] in isotpsniffer and null terminated ifr.ifr_name (strncpy doesn't do that for us). --- cansend.c | 3 ++- isotpsniffer.c | 16 ++++++---------- isotptun.c | 3 ++- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/cansend.c b/cansend.c index a0b9bbb..c2629e1 100644 --- a/cansend.c +++ b/cansend.c @@ -94,7 +94,8 @@ int main(int argc, char **argv) return 1; } - strncpy(ifr.ifr_name, argv[1], IFNAMSIZ); + strncpy(ifr.ifr_name, argv[1], IFNAMSIZ-1); + ifr.ifr_name[IFNAMSIZ-1] = '\0'; ifr.ifr_ifindex = if_nametoindex(ifr.ifr_name); if (!ifr.ifr_ifindex) { perror("if_nametoindex"); diff --git a/isotpsniffer.c b/isotpsniffer.c index 9182fcc..36c5c03 100644 --- a/isotpsniffer.c +++ b/isotpsniffer.c @@ -175,7 +175,7 @@ int main(int argc, char **argv) fd_set rdfs; int s, t; struct sockaddr_can addr; - struct ifreq ifr; + char if_name[IFNAMSIZ]; static struct can_isotp_options opts; int opt, quit = 0; int color = 0; @@ -271,15 +271,11 @@ int main(int argc, char **argv) opts.flags |= CAN_ISOTP_LISTEN_MODE; - strncpy(ifr.ifr_name, argv[optind], IFNAMSIZ); - ifr.ifr_ifindex = if_nametoindex(ifr.ifr_name); - if (!ifr.ifr_ifindex) { - perror("if_nametoindex"); - return 1; - } + strncpy(if_name, argv[optind], IFNAMSIZ-1); + if_name[IFNAMSIZ-1] = '\0'; addr.can_family = AF_CAN; - addr.can_ifindex = ifr.ifr_ifindex; + addr.can_ifindex = if_nametoindex(if_name); setsockopt(s, SOL_CAN_ISOTP, CAN_ISOTP_OPTS, &opts, sizeof(opts)); @@ -339,7 +335,7 @@ int main(int argc, char **argv) if (nbytes > 4095) return -1; printbuf(buffer, nbytes, color?2:0, timestamp, format, - &tv, &last_tv, dst, s, ifr.ifr_name, head); + &tv, &last_tv, dst, s, if_name, head); } if (FD_ISSET(t, &rdfs)) { @@ -351,7 +347,7 @@ int main(int argc, char **argv) if (nbytes > 4095) return -1; printbuf(buffer, nbytes, color?1:0, timestamp, format, - &tv, &last_tv, src, t, ifr.ifr_name, head); + &tv, &last_tv, src, t, if_name, head); } } diff --git a/isotptun.c b/isotptun.c index 400e1b7..0c88188 100644 --- a/isotptun.c +++ b/isotptun.c @@ -291,7 +291,8 @@ int main(int argc, char **argv) memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TUN | IFF_NO_PI; - strncpy(ifr.ifr_name, name, IFNAMSIZ); + strncpy(ifr.ifr_name, name, IFNAMSIZ-1); + ifr.ifr_name[IFNAMSIZ-1] = '\0'; if (ioctl(t, TUNSETIFF, (void *) &ifr) < 0) { perror("ioctl tunfd");