From 7fb366a9ef6d232699a3066882a031fb212a7b43 Mon Sep 17 00:00:00 2001 From: Danomi Czaski Date: Sat, 11 Apr 2015 07:00:51 +0800 Subject: [PATCH] client getaddrinfo valgrind fix Signed-off-by: Danomi Czaski --- lib/client-handshake.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/client-handshake.c b/lib/client-handshake.c index 40916d6b..cff93fab 100644 --- a/lib/client-handshake.c +++ b/lib/client-handshake.c @@ -96,7 +96,7 @@ struct libwebsocket *libwebsocket_client_connect_2( } else #endif { - struct addrinfo ai, *res; + struct addrinfo ai, *res, *result; void *p = NULL; memset (&ai, 0, sizeof ai); @@ -104,9 +104,10 @@ struct libwebsocket *libwebsocket_client_connect_2( ai.ai_socktype = SOCK_STREAM; ai.ai_flags = AI_CANONNAME; - if (getaddrinfo(ads, NULL, &ai, &res)) + if (getaddrinfo(ads, NULL, &ai, &result)) goto oom4; + res = result; while (!p && res) { switch (res->ai_family) { case AF_INET: @@ -117,12 +118,15 @@ struct libwebsocket *libwebsocket_client_connect_2( res = res->ai_next; } - if (!p) + if (!p) { + freeaddrinfo(result); goto oom4; + } server_addr4.sin_family = AF_INET; server_addr4.sin_addr = *((struct in_addr *)p); bzero(&server_addr4.sin_zero, 8); + freeaddrinfo(result); } if (wsi->sock < 0) {