]> granicus.if.org Git - curl/commitdiff
test1537: fixed memory leak on OOM
authorDan Fandrich <dan@coneharvesters.com>
Sun, 25 Jun 2017 20:59:55 +0000 (22:59 +0200)
committerDan Fandrich <dan@coneharvesters.com>
Sun, 25 Jun 2017 20:59:55 +0000 (22:59 +0200)
tests/libtest/lib1537.c

index d449164e4c8576da9dc784418f71dea3ae491fb1..b07d64fc5132b8a990c93d7df98ada6e3ce96613 100644 (file)
@@ -25,8 +25,8 @@
 
 int test(char *URL)
 {
-  unsigned char a[] = {0x2f, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
-                       0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe6, 0xf7};
+  const unsigned char a[] = {0x2f, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+                             0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe6, 0xf7};
   CURLcode res = CURLE_OK;
   char *ptr = NULL;
   int asize;
@@ -49,6 +49,10 @@ int test(char *URL)
   /* deprecated API */
   ptr = curl_escape((char *)a, asize);
   printf("%s\n", ptr);
+  if(!ptr) {
+    res = TEST_ERR_MAJOR_BAD;
+    goto test_cleanup;
+  }
 
   raw = curl_easy_unescape(NULL, ptr, (int)strlen(ptr), &outlen);
   printf("outlen == %d\n", outlen);
@@ -59,6 +63,10 @@ int test(char *URL)
 
   /* deprecated API */
   raw = curl_unescape(ptr, (int)strlen(ptr));
+  if(!raw) {
+    res = TEST_ERR_MAJOR_BAD;
+    goto test_cleanup;
+  }
   outlen = (int)strlen(raw);
   printf("[old] outlen == %d\n", outlen);
   printf("[old] unescape == original? %s\n",
@@ -77,6 +85,9 @@ int test(char *URL)
   ptr = curl_easy_unescape(NULL, (char *)"moahahaha", -1, &outlen);
   printf("unescape -1 length: %s %d\n", ptr, outlen);
 
+test_cleanup:
+  if(ptr)
+    curl_free(ptr);
   curl_global_cleanup();
 
   return (int)res;