summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRikard Falkeborn <rikard.falkeborn@gmail.com>2021-09-29 21:15:05 +0200
committerJay Satiro <raysatiro@yahoo.com>2021-09-30 03:27:46 -0400
commit5de119d0b821286022ce1e928738cd9efb0f72fb (patch)
tree62e52a30d1775ee5314b1ed57da7e0f10b076f25 /lib
parent0b2260b03649f1518e6da5adce287526dd75d23f (diff)
downloadcurl-5de119d0b821286022ce1e928738cd9efb0f72fb.tar.gz
hostip: Move allocation to clarify there is no memleak
By just glancing at the code, it looks like there is a memleak if the call to Curl_inet_pton() fails. Looking closer, it is clear that the call to Curl_inet_pton() can not fail, so the code will never leak memory. However, we can make this obvious by moving the allocation after the if-statement. Closes https://github.com/curl/curl/pull/7796
Diffstat (limited to 'lib')
-rw-r--r--lib/hostip.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/hostip.c b/lib/hostip.c
index 117caa295..c33c9af9d 100644
--- a/lib/hostip.c
+++ b/lib/hostip.c
@@ -507,9 +507,6 @@ static struct Curl_addrinfo *get_localhost(int port)
struct sockaddr_in sa;
unsigned int ipv4;
unsigned short port16 = (unsigned short)(port & 0xffff);
- ca = calloc(sizeof(struct Curl_addrinfo) + ss_size + hostlen + 1, 1);
- if(!ca)
- return NULL;
/* memset to clear the sa.sin_zero field */
memset(&sa, 0, sizeof(sa));
@@ -519,6 +516,9 @@ static struct Curl_addrinfo *get_localhost(int port)
return NULL;
memcpy(&sa.sin_addr, &ipv4, sizeof(ipv4));
+ ca = calloc(sizeof(struct Curl_addrinfo) + ss_size + hostlen + 1, 1);
+ if(!ca)
+ return NULL;
ca->ai_flags = 0;
ca->ai_family = AF_INET;
ca->ai_socktype = SOCK_STREAM;