diff options
Diffstat (limited to 'freebsd/sbin/ifconfig/af_inet6.c')
-rw-r--r-- | freebsd/sbin/ifconfig/af_inet6.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/freebsd/sbin/ifconfig/af_inet6.c b/freebsd/sbin/ifconfig/af_inet6.c index 2dc372a6..173d804d 100644 --- a/freebsd/sbin/ifconfig/af_inet6.c +++ b/freebsd/sbin/ifconfig/af_inet6.c @@ -47,7 +47,6 @@ static const char rcsid[] = #include <net/if.h> #include <err.h> -#include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -348,8 +347,7 @@ in6_getaddr(const char *cs, int which) if (slen < sizeof(s) - 1 ) { memcpy(s, cs, slen + 1); } else { - error = ENAMETOOLONG; - goto done; + errx(1, "%s: address too long", cs); } newaddr &= 1; @@ -370,13 +368,14 @@ in6_getaddr(const char *cs, int which) bzero(&hints, sizeof(struct addrinfo)); hints.ai_family = AF_INET6; error = getaddrinfo(s, NULL, &hints, &res); + if (error != 0) { + if (inet_pton(AF_INET6, s, &sin->sin6_addr) != 1) + errx(1, "%s: bad value", s); + } else { + bcopy(res->ai_addr, sin, res->ai_addrlen); + freeaddrinfo(res); + } } -done: - if (error != 0) { - if (inet_pton(AF_INET6, cs, &sin->sin6_addr) != 1) - errx(1, "%s: bad value", cs); - } else - bcopy(res->ai_addr, sin, res->ai_addrlen); } static int |