jpopelka / rpms / net-tools

Forked from rpms/net-tools 3 years ago
Clone

Blame SOURCES/net-tools-ifconfig-long-iface-crasher.patch

0a4baa
diff -up net-tools-2.0/lib/interface.c.long_iface net-tools-2.0/lib/interface.c
0a4baa
--- net-tools-2.0/lib/interface.c.long_iface	2012-10-04 11:35:27.983694933 +0200
0a4baa
+++ net-tools-2.0/lib/interface.c	2012-10-04 11:35:27.991694805 +0200
0a4baa
@@ -216,6 +216,7 @@ out:
0a4baa
 
0a4baa
 char *get_name(char **namep, char *p)
0a4baa
 {
0a4baa
+    int count = 0;
0a4baa
     while (isspace(*p))
0a4baa
 	p++;
0a4baa
     char *name = *namep = p;
0a4baa
@@ -224,7 +225,13 @@ char *get_name(char **namep, char *p)
0a4baa
 	    break;
0a4baa
 	if (*p == ':') {	/* could be an alias */
0a4baa
 		char *dot = p++;
0a4baa
- 		while (*p && isdigit(*p)) p++;
0a4baa
+		count++;
0a4baa
+		while (*p && isdigit(*p)) {
0a4baa
+		    p++;
0a4baa
+		    count++;
0a4baa
+		    if (count == (IFNAMSIZ-1))
0a4baa
+			break;
0a4baa
+		}
0a4baa
 		if (*p == ':') {
0a4baa
 			/* Yes it is, backup and copy it. */
0a4baa
 			p = dot;
0a4baa
@@ -240,6 +247,9 @@ char *get_name(char **namep, char *p)
0a4baa
 	    break;
0a4baa
 	}
0a4baa
 	*name++ = *p++;
0a4baa
+	count++;
0a4baa
+	if (count == (IFNAMSIZ-1))
0a4baa
+    	      break;
0a4baa
     }
0a4baa
     *name++ = '\0';
0a4baa
     return p;