]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
tool_operate: fix memory mixups
authorDaniel Stenberg <daniel@haxx.se>
Wed, 27 Sep 2023 07:51:46 +0000 (09:51 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 28 Sep 2023 07:24:57 +0000 (09:24 +0200)
Switch to plain getenv() from curl_getenv() to avoid the allocation and
having to keep track of which free() or curl_free() that need to be
used.

Coverity found issues and a memory leak.

Follow-up to 65b563a96a226649ba12cb1e

Closes #11959

src/tool_operate.c

index 8d0fccd982a0c597a90514f29278d476ed75c597..29249975a4ab0f7233d4cc8e29c452faa08e4fc9 100644 (file)
@@ -704,28 +704,31 @@ static char *ipfs_gateway(void)
   char *gateway_composed_file_path = NULL;
   FILE *gateway_file = NULL;
 
-  gateway = curlx_getenv("IPFS_GATEWAY");
+  gateway = getenv("IPFS_GATEWAY");
 
   /* Gateway is found from environment variable. */
-  if(gateway && strlen(gateway)) {
+  if(gateway && *gateway) {
     char *composed_gateway = NULL;
-    bool add_slash = (gateway[strlen(gateway) - 1] == '/') ? FALSE : TRUE;
+    bool add_slash = (gateway[strlen(gateway) - 1] != '/');
     composed_gateway = aprintf("%s%s", gateway, (add_slash) ? "/" : "");
-    Curl_safefree(gateway);
-    gateway = aprintf("%s", composed_gateway);
-    Curl_safefree(composed_gateway);
+    if(composed_gateway) {
+      gateway = aprintf("%s", composed_gateway);
+      Curl_safefree(composed_gateway);
+    }
     return gateway;
   }
+  else
+    /* a blank string does not count */
+    gateway = NULL;
 
   /* Try to find the gateway in the IPFS data folder. */
-  ipfs_path = curlx_getenv("IPFS_PATH");
+  ipfs_path = getenv("IPFS_PATH");
 
   if(!ipfs_path) {
-    char *home = NULL;
-    home = curlx_getenv("HOME");
-    /* Empty path, fallback to "~/.ipfs", as that's the default location. */
-    ipfs_path = aprintf("%s/.ipfs/", home);
-    Curl_safefree(home);
+    char *home = getenv("HOME");
+    if(home && *home)
+      ipfs_path = aprintf("%s/.ipfs/", home);
+    /* fallback to "~/.ipfs", as that's the default location. */
   }
 
   if(!ipfs_path) {
@@ -750,10 +753,7 @@ static char *ipfs_gateway(void)
 
     if((PARAM_OK == file2string(&gateway_buffer, gateway_file)) &&
        gateway_buffer) {
-      bool add_slash = (gateway_buffer[strlen(gateway_buffer) - 1] == '/')
-        ? FALSE
-        : TRUE;
-
+      bool add_slash = (gateway_buffer[strlen(gateway_buffer) - 1] != '/');
       gateway = aprintf("%s%s", gateway_buffer, (add_slash) ? "/" : "");
       Curl_safefree(gateway_buffer);
     }