diff options
Diffstat (limited to 'networking/interface.c')
| -rw-r--r-- | networking/interface.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/networking/interface.c b/networking/interface.c index 964665c71..f5937ef3f 100644 --- a/networking/interface.c +++ b/networking/interface.c | |||
| @@ -129,7 +129,7 @@ static struct aftype inet_aftype = { | |||
| 129 | .name = "inet", | 129 | .name = "inet", |
| 130 | .title = "DARPA Internet", | 130 | .title = "DARPA Internet", |
| 131 | .af = AF_INET, | 131 | .af = AF_INET, |
| 132 | .alen = sizeof(unsigned long), | 132 | .alen = 4, |
| 133 | .sprint = INET_sprint, | 133 | .sprint = INET_sprint, |
| 134 | .fd = -1 | 134 | .fd = -1 |
| 135 | }; | 135 | }; |
| @@ -444,22 +444,16 @@ static int if_readconf(void) | |||
| 444 | 444 | ||
| 445 | static char *get_name(char *name, char *p) | 445 | static char *get_name(char *name, char *p) |
| 446 | { | 446 | { |
| 447 | /* Extract <name>[:<alias>] from nul-terminated p where p matches | 447 | /* Extract <name> from nul-terminated p where p matches |
| 448 | <name>[:<alias>]: after leading whitespace. | 448 | <name>: after leading whitespace. |
| 449 | If match is not made, set name empty and return unchanged p */ | 449 | If match is not made, set name empty and return unchanged p */ |
| 450 | int namestart=0, nameend=0, aliasend; | 450 | int namestart=0, nameend=0; |
| 451 | while (isspace(p[namestart])) | 451 | while (isspace(p[namestart])) |
| 452 | namestart++; | 452 | namestart++; |
| 453 | nameend=namestart; | 453 | nameend=namestart; |
| 454 | while (p[nameend] && p[nameend]!=':' && !isspace(p[nameend])) | 454 | while (p[nameend] && p[nameend]!=':' && !isspace(p[nameend])) |
| 455 | nameend++; | 455 | nameend++; |
| 456 | if (p[nameend]==':') { | 456 | if (p[nameend]==':') { |
| 457 | aliasend=nameend+1; | ||
| 458 | while (p[aliasend] && isdigit(p[aliasend])) | ||
| 459 | aliasend++; | ||
| 460 | if (p[aliasend]==':') { | ||
| 461 | nameend=aliasend; | ||
| 462 | } | ||
| 463 | if ((nameend-namestart)<IFNAMSIZ) { | 457 | if ((nameend-namestart)<IFNAMSIZ) { |
| 464 | memcpy(name,&p[namestart],nameend-namestart); | 458 | memcpy(name,&p[namestart],nameend-namestart); |
| 465 | name[nameend-namestart]='\0'; | 459 | name[nameend-namestart]='\0'; |
| @@ -469,7 +463,7 @@ static char *get_name(char *name, char *p) | |||
| 469 | name[0]='\0'; | 463 | name[0]='\0'; |
| 470 | } | 464 | } |
| 471 | } else { | 465 | } else { |
| 472 | /* first ':' not found - return empty */ | 466 | /* trailing ':' not found - return empty */ |
| 473 | name[0]='\0'; | 467 | name[0]='\0'; |
| 474 | } | 468 | } |
| 475 | return p + 1; | 469 | return p + 1; |
