Browse Source

Bugfix: Use freeaddrinfo to clean up in extract_sockaddr

Luke Dashjr 13 years ago
parent
commit
e819d49efb
1 changed files with 9 additions and 1 deletions
  1. 9 1
      util.c

+ 9 - 1
util.c

@@ -866,7 +866,15 @@ bool extract_sockaddr(struct pool *pool, char *url)
 		return false;
 		return false;
 	}
 	}
 
 
-	pool->server = (struct sockaddr_in *)res->ai_addr;
+	free(pool->server);
+	pool->server = malloc(res->ai_addrlen);
+	if (!pool->server) {
+		freeaddrinfo(res);
+		applog(LOG_ERR, "Malloc failure in extract_sockaddr");
+		return false;
+	}
+	memcpy(pool->server, res->ai_addr, res->ai_addrlen);
+
 	free(pool->sockaddr_url);
 	free(pool->sockaddr_url);
 	pool->sockaddr_url = strdup(url_address);
 	pool->sockaddr_url = strdup(url_address);