diff options
Diffstat (limited to 'sys-apps/net-tools/files/net-tools-1.60-get_name.patch')
-rw-r--r-- | sys-apps/net-tools/files/net-tools-1.60-get_name.patch | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/sys-apps/net-tools/files/net-tools-1.60-get_name.patch b/sys-apps/net-tools/files/net-tools-1.60-get_name.patch deleted file mode 100644 index 1371c672ce0e..000000000000 --- a/sys-apps/net-tools/files/net-tools-1.60-get_name.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff -Nrup net-tools-1.60.orig/lib/interface.c net-tools-1.60/lib/interface.c ---- net-tools-1.60.orig/lib/interface.c 2004-08-12 05:54:09.000000000 -0400 -+++ net-tools-1.60/lib/interface.c 2004-08-12 06:03:20.000000000 -0400 -@@ -203,28 +203,34 @@ out: - - static char *get_name(char *name, char *p) - { -- while (isspace(*p)) -- p++; -- while (*p) { -- if (isspace(*p)) -- break; -- if (*p == ':') { /* could be an alias */ -- char *dot = p, *dotname = name; -- *name++ = *p++; -- while (isdigit(*p)) -- *name++ = *p++; -- if (*p != ':') { /* it wasn't, backup */ -- p = dot; -- name = dotname; -- } -- if (*p == '\0') -- return NULL; -- p++; -- break; -+ /* Extract <name>[:<alias>] from nul-terminated p where p matches -+ <name>[:<alias>]: after leading whitespace. -+ If match is not made, set name empty and return unchanged p */ -+ int namestart=0, nameend=0, aliasend; -+ while (isspace(p[namestart])) -+ namestart++; -+ nameend=namestart; -+ while (p[nameend] && p[nameend]!=':' && !isspace(p[nameend])) -+ nameend++; -+ if (p[nameend]==':') { -+ aliasend=nameend+1; -+ while (p[aliasend] && isdigit(p[aliasend])) -+ aliasend++; -+ if (p[aliasend]==':') { -+ nameend=aliasend; -+ } -+ if ((nameend-namestart)<IFNAMSIZ) { -+ memcpy(name,&p[namestart],nameend-namestart); -+ name[nameend-namestart]='\0'; -+ p=&p[nameend+1]; -+ } else { -+ /* Interface name too large */ -+ name[0]='\0'; - } -- *name++ = *p++; -+ } else { -+ /* first ':' not found - return empty */ -+ name[0]='\0'; - } -- *name++ = '\0'; - return p; - } - |