don't call freeaddinfo(NULL)
No binary (build failed)
—
(log yok)
| @@ -164,17 +164,17 @@ char* FAST_FUNC INET_rresolve(struct sockaddr_in *s_in, int numeric, uint32_t ne | |
| int FAST_FUNC INET6_resolve(const char *name, struct sockaddr_in6 *sin6) | |
| { | |
| - | struct addrinfo req, *ai; |
| + | struct addrinfo req, *ai = NULL; |
| int s; | |
| - | memset(&req, '\0', sizeof req); |
| + | memset(&req, 0, sizeof(req)); |
| req.ai_family = AF_INET6; | |
| s = getaddrinfo(name, NULL, &req, &ai); | |
| - | if (s) { |
| + | if (s != 0) { |
| bb_error_msg("getaddrinfo: %s: %d", name, s); | |
| return -1; | |
| } | |
| - | memcpy(sin6, ai->ai_addr, sizeof(struct sockaddr_in6)); |
| + | memcpy(sin6, ai->ai_addr, sizeof(*sin6)); |
| freeaddrinfo(ai); | |
| return 0; | |
| } | |
| @@ -209,9 +209,11 @@ char* FAST_FUNC INET6_rresolve(struct sockaddr_in6 *sin6, int numeric) | |
| return xstrdup("*"); | |
| } | |
| - | s = getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6), |
| - | name, sizeof(name), NULL, 0, 0); |
| - | if (s) { |
| + | s = getnameinfo((struct sockaddr *) sin6, sizeof(*sin6), |
| + | name, sizeof(name), |
| + | /*serv,servlen:*/ NULL, 0, |
| + | 0); |
| + | if (s != 0) { |
| bb_error_msg("getnameinfo failed"); | |
| return NULL; | |
| } | |
| @@ -255,7 +255,7 @@ IF_NOT_FEATURE_IPV6(sa_family_t af = AF_INET;) | |
| memset(&hint, 0 , sizeof(hint)); | |
| hint.ai_family = af; | |
| - | /* Needed. Or else we will get each address thrice (or more) |
| + | /* Need SOCK_STREAM, or else we get each address thrice (or more) |
| * for each possible socket type (tcp,udp,raw...): */ | |
| hint.ai_socktype = SOCK_STREAM; | |
| hint.ai_flags = ai_flags & ~DIE_ON_ERROR; | |
| @@ -285,7 +285,8 @@ IF_NOT_FEATURE_IPV6(sa_family_t af = AF_INET;) | |
| set_port: | |
| set_nport(r, htons(port)); | |
| ret: | |
| - | freeaddrinfo(result); |
| + | if (result) |
| + | freeaddrinfo(result); |
| return r; | |
| } | |
| #if !ENABLE_FEATURE_IPV6 | |
| @@ -66,7 +66,7 @@ static int print_host(const char *hostname, const char *header) | |
| // hint.ai_flags = AI_CANONNAME; | |
| rc = getaddrinfo(hostname, NULL /*service*/, &hint, &result); | |
| - | if (!rc) { |
| + | if (rc == 0) { |
| struct addrinfo *cur = result; | |
| unsigned cnt = 0; | |
| @@ -94,7 +94,7 @@ static int print_host(const char *hostname, const char *header) | |
| bb_error_msg("can't resolve '%s'", hostname); | |
| #endif | |
| } | |
| - | if (ENABLE_FEATURE_CLEAN_UP) |
| + | if (ENABLE_FEATURE_CLEAN_UP && result) |
| freeaddrinfo(result); | |
| return (rc != 0); | |
| } | |