]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
hostip: fix the memory-leak introduced in 67d2802
authorDaniel Stenberg <daniel@haxx.se>
Tue, 2 Jun 2020 08:45:35 +0000 (10:45 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 2 Jun 2020 10:43:50 +0000 (12:43 +0200)
Fixes #5503
Closes #5504

lib/hostip.c

index 49b53dc3bd2ed32d6931f18009b04dda64b64f1a..dd5916e338eab33d655df276ff0f7c45d4dc0ed3 100644 (file)
@@ -530,6 +530,7 @@ enum resolve_t Curl_resolv(struct connectdata *conn,
         return CURLRESOLV_ERROR;
     }
 
+#ifndef USE_RESOLVE_ON_IPS
     /* First check if this is an IPv4 address string */
     if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
       /* This is a dotted IP address 123.123.123.123-style */
@@ -544,14 +545,22 @@ enum resolve_t Curl_resolv(struct connectdata *conn,
     }
 #endif /* ENABLE_IPV6 */
 
-#ifdef USE_RESOLVE_ON_IPS
-    /* If given a numerical IP, USE_RESOLVE_ON_IPS means this still needs to
-       get "resolved" but not with DoH */
-    if(addr) {
-      addr = NULL;
+#else /* if USE_RESOLVE_ON_IPS */
+    /* First check if this is an IPv4 address string */
+    if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
+      /* This is a dotted IP address 123.123.123.123-style */
       ipnum = TRUE;
+#ifdef ENABLE_IPV6
+    else {
+      struct in6_addr in6;
+      /* check if this is an IPv6 address string */
+      if(Curl_inet_pton(AF_INET6, hostname, &in6) > 0)
+        /* This is an IPv6 address literal */
+        ipnum = TRUE;
     }
-#endif /* USE_RESOLVE_ON_IPS */
+#endif /* ENABLE_IPV6 */
+
+#endif /* !USE_RESOLVE_ON_IPS */
 
     if(!addr) {
       /* Check what IP specifics the app has requested and if we can provide