]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blobdiff - net-tools/patches/net-tools-1.60-ifconfig-long-iface-crasher.patch
Move all packages to root.
[people/ms/ipfire-3.x.git] / net-tools / patches / net-tools-1.60-ifconfig-long-iface-crasher.patch
diff --git a/net-tools/patches/net-tools-1.60-ifconfig-long-iface-crasher.patch b/net-tools/patches/net-tools-1.60-ifconfig-long-iface-crasher.patch
new file mode 100644 (file)
index 0000000..87fcc5d
--- /dev/null
@@ -0,0 +1,36 @@
+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;