diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-08-07 12:12:37 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-09-21 10:29:36 +0200 |
commit | de261e0404e1fe54544275fc57d5b982df4f42b4 (patch) | |
tree | 856cbdf23d6809b99c4d642d066bc45cd67c26e6 /freebsd/sbin/ifconfig/af_inet6.c | |
parent | libbsd.txt: Use rtems_bsd_ifconfig_lo0() (diff) | |
download | rtems-libbsd-de261e0404e1fe54544275fc57d5b982df4f42b4.tar.bz2 |
Update to FreeBSD head 2017-06-01
Git mirror commit dfb26efac4ce9101dda240e94d9ab53f80a9e131.
Update #3472.
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 |