aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaly Magerya <vmagerya@gmail.com>2011-03-22 20:14:26 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2011-03-22 20:14:26 +0100
commit7f4b769c42f3773ff2e2e749547291dcb7e85d01 (patch)
tree33680f1d1a6d182c2d78dd2158ee696528fea920
parentcf9074b54bfb5a325ce59127b7afe1e892223a1c (diff)
downloadbusybox-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>
-rw-r--r--libbb/inet_common.c16
-rw-r--r--libbb/xconnect.c5
-rw-r--r--networking/nslookup.c4
3 files changed, 14 insertions, 11 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
165int FAST_FUNC INET6_resolve(const char *name, struct sockaddr_in6 *sin6) 165int 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
diff --git a/networking/nslookup.c b/networking/nslookup.c
index dcac7379e..67fc01547 100644
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -66,7 +66,7 @@ static int print_host(const char *hostname, const char *header)
66 // hint.ai_flags = AI_CANONNAME; 66 // hint.ai_flags = AI_CANONNAME;
67 rc = getaddrinfo(hostname, NULL /*service*/, &hint, &result); 67 rc = getaddrinfo(hostname, NULL /*service*/, &hint, &result);
68 68
69 if (!rc) { 69 if (rc == 0) {
70 struct addrinfo *cur = result; 70 struct addrinfo *cur = result;
71 unsigned cnt = 0; 71 unsigned cnt = 0;
72 72
@@ -94,7 +94,7 @@ static int print_host(const char *hostname, const char *header)
94 bb_error_msg("can't resolve '%s'", hostname); 94 bb_error_msg("can't resolve '%s'", hostname);
95#endif 95#endif
96 } 96 }
97 if (ENABLE_FEATURE_CLEAN_UP) 97 if (ENABLE_FEATURE_CLEAN_UP && result)
98 freeaddrinfo(result); 98 freeaddrinfo(result);
99 return (rc != 0); 99 return (rc != 0);
100} 100}