]> granicus.if.org Git - php/commitdiff
Fixed memory leak in curl_getinfo()
authorLeigh <leigh@php.net>
Mon, 8 Feb 2016 11:36:14 +0000 (11:36 +0000)
committerLeigh <leigh@php.net>
Mon, 8 Feb 2016 11:36:14 +0000 (11:36 +0000)
The "v ? v" in the CAASTR macro caused zend_string_copy to be
called twice

NEWS
ext/curl/interface.c

diff --git a/NEWS b/NEWS
index 1a18dbe4b05c00951bc57799cf33c99e4a30bd46..6390d605297656738dd931304a3353487c4bd3a0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -23,6 +23,7 @@ PHP                                                                        NEWS
 - CURL:
   . Fixed bug #71523 (Copied handle with new option CURLOPT_HTTPHEADER crashes
     while curl_multi_exec). (Laruence)
+  . Fixed memory leak in curl_getinfo(). (Leigh)
 
 - Fileinfo:
   . Fixed bug #71434 (finfo throws notice for specific python file). (Laruence)
index 1cd22a8acf4a0360b06947bcd8591031e13a6db3..8b9a756aa28fb9d8bd99a0669539612ce8c3c3ab 100644 (file)
@@ -157,7 +157,8 @@ static void _php_curl_close(zend_resource *rsrc);
 #define CAAL(s, v) add_assoc_long_ex(return_value, s, sizeof(s) - 1, (zend_long) v);
 #define CAAD(s, v) add_assoc_double_ex(return_value, s, sizeof(s) - 1, (double) v);
 #define CAAS(s, v) add_assoc_string_ex(return_value, s, sizeof(s) - 1, (char *) (v ? v : ""));
-#define CAASTR(s, v) add_assoc_str_ex(return_value, s, sizeof(s) - 1, v ? v : ZSTR_EMPTY_ALLOC());
+#define CAASTR(s, v) add_assoc_str_ex(return_value, s, sizeof(s) - 1, \
+               v ? zend_string_copy(v) : ZSTR_EMPTY_ALLOC());
 #define CAAZ(s, v) add_assoc_zval_ex(return_value, s, sizeof(s) -1 , (zval *) v);
 
 #if defined(PHP_WIN32) || defined(__GNUC__)
@@ -3036,7 +3037,7 @@ PHP_FUNCTION(curl_getinfo)
                }
 #endif
                if (ch->header.str) {
-                       CAASTR("request_header", zend_string_copy(ch->header.str));
+                       CAASTR("request_header", ch->header.str);
                }
        } else {
                switch (option) {