diff -Naurp net-tools-1.60-ifconfig-new/lib/interface.c net-tools-1.60-ifconfig/lib/interface.c --- net-tools-1.60-ifconfig-new/lib/interface.c 2006-03-23 07:02:48.000000000 +0100 +++ net-tools-1.60-ifconfig/lib/interface.c 2006-03-23 09:58:45.000000000 +0100 @@ -203,6 +203,7 @@ out: static char *get_name(char **namep, char *p) { + int count = 0; while (isspace(*p)) p++; char *name = *namep = p; @@ -211,8 +212,13 @@ static char *get_name(char **namep, char if (*p == ':') { /* could be an alias */ char *dot = p, *dotname = name; *name++ = *p++; - while (isdigit(*p)) + count++; + while (isdigit(*p)){ *name++ = *p++; + count++; + if (count == (IFNAMSIZ-1)) + break; + } if (*p != ':') { /* it wasn't, backup */ p = dot; name = dotname; @@ -223,6 +229,9 @@ static char *get_name(char **namep, char break; } *name++ = *p++; + count++; + if (count == (IFNAMSIZ-1)) + break; } *name++ = '\0'; return p;