]> granicus.if.org Git - php/commitdiff
Fixed bug #79741
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 26 Jun 2020 10:26:46 +0000 (12:26 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 26 Jun 2020 10:28:39 +0000 (12:28 +0200)
NEWS
ext/curl/interface.c
ext/curl/tests/bug79741.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index eb71c9f9843355cd24b406440bec47580507003b..c5051c26a4cf241ae63ec981e01b8b88ae43dd3a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,10 @@ PHP                                                                        NEWS
   . Fixed bug #79030 (Upgrade apache2handler's php_apache_sapi_get_request_time
     to return usec). (Herbert256)
 
+- Curl:
+  . Fixed bug #79741 (curl_setopt CURLOPT_POSTFIELDS asserts on object with
+    declared properties). (Nikita)
+
 - FTP:
   . Fixed bug #55857 (ftp_size on large files). (cmb)
 
index 630d3b0a89664ca54516cda9cdb14bdcaf99008b..ebe01a9d8dbed97d12ed1872644d6ca6c0f9704d 100644 (file)
@@ -2719,7 +2719,7 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
                                return FAILURE;
                        }
 
-                       ZEND_HASH_FOREACH_VAL(ph, current) {
+                       ZEND_HASH_FOREACH_VAL_IND(ph, current) {
                                ZVAL_DEREF(current);
                                val = zval_get_tmp_string(current, &tmp_val);
                                slist = curl_slist_append(slist, ZSTR_VAL(val));
@@ -2797,7 +2797,7 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
                                }
 #endif
 
-                               ZEND_HASH_FOREACH_KEY_VAL(postfields, num_key, string_key, current) {
+                               ZEND_HASH_FOREACH_KEY_VAL_IND(postfields, num_key, string_key, current) {
                                        zend_string *postval, *tmp_postval;
                                        /* Pretend we have a string_key here */
                                        if (!string_key) {
diff --git a/ext/curl/tests/bug79741.phpt b/ext/curl/tests/bug79741.phpt
new file mode 100644 (file)
index 0000000..17c3f57
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+Bug #79741: curl_setopt CURLOPT_POSTFIELDS asserts on object with declared properties
+--FILE--
+<?php
+
+class Test {
+       public $prop = "value";
+}
+
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_POSTFIELDS, new Test);
+
+?>
+===DONE===
+--EXPECT--
+===DONE===