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 |