From: Bernd Eckenfels Date: Fri, 14 Jun 2002 01:08:20 +0000 (+0000) Subject: this fixes segfault on -A "" and -F "" in mii-tool reported in debian X-Git-Tag: upstream/1.99_20121209git~199 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8cd8f53b1865722b4c21a9668719044cb0df4fd2;p=platform%2Fupstream%2Fnet-tools.git this fixes segfault on -A "" and -F "" in mii-tool reported in debian bug #139027 --- diff --git a/mii-tool.c b/mii-tool.c index ef2d48a..1780b1d 100644 --- a/mii-tool.c +++ b/mii-tool.c @@ -166,7 +166,7 @@ static int parse_media(char *arg) s = strtok(arg, ", "); do { for (i = 0; i < NMEDIA; i++) - if (strcasecmp(media[i].name, s) == 0) break; + if (s && strcasecmp(media[i].name, s) == 0) break; if (i == NMEDIA) goto failed; mask |= media[i].value; } while ((s = strtok(NULL, ", ")) != NULL); @@ -329,7 +329,7 @@ static int do_one_xcvr(int skfd, char *ifname, int maybe) printf("resetting the transceiver...\n"); mdio_write(skfd, MII_BMCR, MII_BMCR_RESET); } - if (nway_advertise) { + if (nway_advertise > 0) { mdio_write(skfd, MII_ANAR, nway_advertise | 1); opt_restart = 1; } @@ -411,6 +411,10 @@ int main(int argc, char **argv) } /* Check for a few inappropriate option combinations */ if (opt_watch) verbose = 0; + + if ((nway_advertise < 0) || (fixed_speed < 0)) + return 2; + if (errflag || (fixed_speed & (fixed_speed-1)) || (fixed_speed && (opt_restart || nway_advertise))) { fprintf(stderr, usage, argv[0]);