diff options
| author | Vitaly Magerya <vmagerya@gmail.com> | 2011-03-22 20:14:26 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2011-03-22 20:14:26 +0100 |
| commit | 7f4b769c42f3773ff2e2e749547291dcb7e85d01 (patch) | |
| tree | 33680f1d1a6d182c2d78dd2158ee696528fea920 /libbb | |
| parent | cf9074b54bfb5a325ce59127b7afe1e892223a1c (diff) | |
| download | busybox-w32-7f4b769c42f3773ff2e2e749547291dcb7e85d01.tar.gz busybox-w32-7f4b769c42f3773ff2e2e749547291dcb7e85d01.tar.bz2 busybox-w32-7f4b769c42f3773ff2e2e749547291dcb7e85d01.zip | |
don't call freeaddinfo(NULL)
Signed-off-by: Vitaly Magerya <vmagerya@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
| -rw-r--r-- | libbb/inet_common.c | 16 | ||||
| -rw-r--r-- | libbb/xconnect.c | 5 |
2 files changed, 12 insertions, 9 deletions
diff --git a/libbb/inet_common.c b/libbb/inet_common.c index 6f585ebd9..207720e96 100644 --- a/libbb/inet_common.c +++ b/libbb/inet_common.c | |||
| @@ -164,17 +164,17 @@ char* FAST_FUNC INET_rresolve(struct sockaddr_in *s_in, int numeric, uint32_t ne | |||
| 164 | 164 | ||
| 165 | int FAST_FUNC INET6_resolve(const char *name, struct sockaddr_in6 *sin6) | 165 | int FAST_FUNC INET6_resolve(const char *name, struct sockaddr_in6 *sin6) |
| 166 | { | 166 | { |
| 167 | struct addrinfo req, *ai; | 167 | struct addrinfo req, *ai = NULL; |
| 168 | int s; | 168 | int s; |
| 169 | 169 | ||
| 170 | memset(&req, '\0', sizeof req); | 170 | memset(&req, 0, sizeof(req)); |
| 171 | req.ai_family = AF_INET6; | 171 | req.ai_family = AF_INET6; |
| 172 | s = getaddrinfo(name, NULL, &req, &ai); | 172 | s = getaddrinfo(name, NULL, &req, &ai); |
| 173 | if (s) { | 173 | if (s != 0) { |
| 174 | bb_error_msg("getaddrinfo: %s: %d", name, s); | 174 | bb_error_msg("getaddrinfo: %s: %d", name, s); |
| 175 | return -1; | 175 | return -1; |
| 176 | } | 176 | } |
| 177 | memcpy(sin6, ai->ai_addr, sizeof(struct sockaddr_in6)); | 177 | memcpy(sin6, ai->ai_addr, sizeof(*sin6)); |
| 178 | freeaddrinfo(ai); | 178 | freeaddrinfo(ai); |
| 179 | return 0; | 179 | return 0; |
| 180 | } | 180 | } |
| @@ -209,9 +209,11 @@ char* FAST_FUNC INET6_rresolve(struct sockaddr_in6 *sin6, int numeric) | |||
| 209 | return xstrdup("*"); | 209 | return xstrdup("*"); |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | s = getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6), | 212 | s = getnameinfo((struct sockaddr *) sin6, sizeof(*sin6), |
| 213 | name, sizeof(name), NULL, 0, 0); | 213 | name, sizeof(name), |
| 214 | if (s) { | 214 | /*serv,servlen:*/ NULL, 0, |
| 215 | 0); | ||
| 216 | if (s != 0) { | ||
| 215 | bb_error_msg("getnameinfo failed"); | 217 | bb_error_msg("getnameinfo failed"); |
| 216 | return NULL; | 218 | return NULL; |
| 217 | } | 219 | } |
diff --git a/libbb/xconnect.c b/libbb/xconnect.c index 3a6585caa..127e2a5fc 100644 --- a/libbb/xconnect.c +++ b/libbb/xconnect.c | |||
| @@ -255,7 +255,7 @@ IF_NOT_FEATURE_IPV6(sa_family_t af = AF_INET;) | |||
| 255 | 255 | ||
| 256 | memset(&hint, 0 , sizeof(hint)); | 256 | memset(&hint, 0 , sizeof(hint)); |
| 257 | hint.ai_family = af; | 257 | hint.ai_family = af; |
| 258 | /* Needed. Or else we will get each address thrice (or more) | 258 | /* Need SOCK_STREAM, or else we get each address thrice (or more) |
| 259 | * for each possible socket type (tcp,udp,raw...): */ | 259 | * for each possible socket type (tcp,udp,raw...): */ |
| 260 | hint.ai_socktype = SOCK_STREAM; | 260 | hint.ai_socktype = SOCK_STREAM; |
| 261 | hint.ai_flags = ai_flags & ~DIE_ON_ERROR; | 261 | hint.ai_flags = ai_flags & ~DIE_ON_ERROR; |
| @@ -285,7 +285,8 @@ IF_NOT_FEATURE_IPV6(sa_family_t af = AF_INET;) | |||
| 285 | set_port: | 285 | set_port: |
| 286 | set_nport(r, htons(port)); | 286 | set_nport(r, htons(port)); |
| 287 | ret: | 287 | ret: |
| 288 | freeaddrinfo(result); | 288 | if (result) |
| 289 | freeaddrinfo(result); | ||
| 289 | return r; | 290 | return r; |
| 290 | } | 291 | } |
| 291 | #if !ENABLE_FEATURE_IPV6 | 292 | #if !ENABLE_FEATURE_IPV6 |
