replaced ifr by simple char if_name[IFNAMSIZ] in isotpsniffer and null terminated ifr.ifr_name (strncpy doesn't do that for us).

pull/4/head
Sven Schmitt 2015-06-25 10:34:04 +02:00
parent 177f9e6722
commit ee10198a39
3 changed files with 10 additions and 12 deletions

View File

@ -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");

View File

@ -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);
}
}

View File

@ -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");