]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
lib: survive some NULL input args
authorDaniel Stenberg <daniel@haxx.se>
Tue, 23 Jul 2024 09:06:56 +0000 (11:06 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 25 Jul 2024 22:01:54 +0000 (00:01 +0200)
The input string pointer to:

curl_escape
curl_easy_escape
curl_unescape
curl_easy_unescape

The running_handles pointer to:

curl_multi_perform
curl_multi_socket_action
curl_multi_socket_all
curl_multi_socket

Reported-by: icy17 on github
Fixes #14247
Closes #14262

lib/escape.c
lib/multi.c

index 4eb53ad2895a98f2635f205abef1fbde095919b7..1633c2da2b8d033f16654c0d5db8dd32aabac389 100644 (file)
@@ -60,7 +60,7 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
   struct dynbuf d;
   (void)data;
 
-  if(inlength < 0)
+  if(!string || (inlength < 0))
     return NULL;
 
   Curl_dyn_init(&d, CURL_MAX_INPUT_LENGTH * 3);
@@ -181,7 +181,7 @@ char *curl_easy_unescape(struct Curl_easy *data, const char *string,
 {
   char *str = NULL;
   (void)data;
-  if(length >= 0) {
+  if(string && (length >= 0)) {
     size_t inputlen = (size_t)length;
     size_t outputlen;
     CURLcode res = Curl_urldecode(string, inputlen, &str, &outputlen,
index 014401cf938ebce280353f50f90442a2bc63bf9a..81bd942ff9b6a2ced3265a384f69106eb096723e 100644 (file)
@@ -2778,7 +2778,8 @@ CURLMcode curl_multi_perform(struct Curl_multi *multi, int *running_handles)
     }
   } while(t);
 
-  *running_handles = (int)multi->num_alive;
+  if(running_handles)
+    *running_handles = (int)multi->num_alive;
 
   if(CURLM_OK >= returncode)
     returncode = Curl_update_timer(multi);
@@ -3302,7 +3303,8 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
   if(first)
     sigpipe_restore(&pipe_st);
 
-  *running_handles = (int)multi->num_alive;
+  if(running_handles)
+    *running_handles = (int)multi->num_alive;
   return result;
 }