]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
curl_easy_unescape: deny negative string lengths as input
authorDaniel Stenberg <daniel@haxx.se>
Tue, 13 Sep 2016 21:00:50 +0000 (23:00 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 14 Sep 2016 05:49:43 +0000 (07:49 +0200)
CVE-2016-7167

Bug: https://curl.haxx.se/docs/adv_20160914.html

lib/escape.c

index 63edd84fa3de5c8612e21182cc2936fc895e5728..e61260d7c989600b779fd4fa21647c419a8f393d 100644 (file)
@@ -217,14 +217,16 @@ char *curl_easy_unescape(struct Curl_easy *data, const char *string,
                          int length, int *olen)
 {
   char *str = NULL;
-  size_t inputlen = length;
-  size_t outputlen;
-  CURLcode res = Curl_urldecode(data, string, inputlen, &str, &outputlen,
-                                FALSE);
-  if(res)
-    return NULL;
-  if(olen)
-    *olen = curlx_uztosi(outputlen);
+  if(length >= 0) {
+    size_t inputlen = length;
+    size_t outputlen;
+    CURLcode res = Curl_urldecode(data, string, inputlen, &str, &outputlen,
+                                  FALSE);
+    if(res)
+      return NULL;
+    if(olen)
+      *olen = curlx_uztosi(outputlen);
+  }
   return str;
 }