Index: sbin/ifconfig/ifconfig.c =================================================================== RCS file: /home/ncvs/src/sbin/ifconfig/ifconfig.c,v retrieving revision 1.97 diff -u -r1.97 ifconfig.c --- sbin/ifconfig/ifconfig.c 10 Mar 2004 08:42:53 -0000 1.97 +++ sbin/ifconfig/ifconfig.c 13 Mar 2004 00:04:40 -0000 @@ -1049,18 +1049,17 @@ setifname(const char *val, int dummy __unused, int s, const struct afswtch *afp) { - char *newname; + char newname[IFNAMSIZ]; - newname = strdup(val); + if (sscanf(val, "%[a-zA-Z0-9_]", newname) != 1) + errx(-1, "setifname: invalid name specified!"); ifr.ifr_data = newname; if (ioctl(s, SIOCSIFNAME, (caddr_t)&ifr) < 0) { warn("ioctl (set name)"); - free(newname); return; } strlcpy(name, newname, sizeof(name)); - free(newname); /* * Even if we just created the interface, we don't need to print