]> granicus.if.org Git - php/commitdiff
Fixed #63859 Memory leak when reusing curl-handle
authorPierrick Charron <pierrick@php.net>
Thu, 27 Dec 2012 18:31:55 +0000 (13:31 -0500)
committerPierrick Charron <pierrick@php.net>
Thu, 27 Dec 2012 18:31:55 +0000 (13:31 -0500)
When CURLOPT_POSTFIELDS is called more than once on the same
curl handle, php/curl did not free the memory of the previous
post data. This commit will fix the problem unless the curl
handle was previously duplicated using the curl_copy_handle()
function in which case we can not know if the post data is
still in use or not by any curl handle

NEWS
ext/curl/interface.c

diff --git a/NEWS b/NEWS
index 208af933254c75fe3459e073d51ae27dbeda2367..164daeb178bee95c0a514ec67dc9de7d1238e0d2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,7 @@ PHP                                                                        NEWS
 
 - cURL extension:
   . Fixed bug (segfault due to libcurl connection caching). (Pierrick)
+  . Fixed bug #63859 (Memory leak when reusing curl-handle). (Pierrick)
   . Fixed bug #63795 (CURL >= 7.28.0 no longer support value 1 for
     CURLOPT_SSL_VERIFYHOST). (Pierrick)
   . Fixed bug #63352 (Can't enable hostname validation when using curl stream
index a23f8599464f07642ed859c27b252ad4bab43858..55102da2aff7e08a08c290650e34b8e5495a5a63 100644 (file)
@@ -2131,6 +2131,9 @@ string_copy:
                                        return 1;
                                }
 
+                               if (Z_REFCOUNT_P(ch->clone) <= 1) {
+                                       zend_llist_clean(&ch->to_free->post);
+                               }
                                zend_llist_add_element(&ch->to_free->post, &first);
                                error = curl_easy_setopt(ch->cp, CURLOPT_HTTPPOST, first);