diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/curl/interface.c | 8 | ||||
-rw-r--r-- | ext/curl/tests/bug55767.phpt | 53 |
2 files changed, 57 insertions, 4 deletions
diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 7659d57ada..07b4ad3550 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -2007,10 +2007,6 @@ string_copy: HashTable *postfields; struct HttpPost *first = NULL; struct HttpPost *last = NULL; - char *postval; - char *string_key = NULL; - ulong num_key; - uint string_key_len; postfields = HASH_OF(*zvalue); if (!postfields) { @@ -2023,6 +2019,10 @@ string_copy: zend_hash_get_current_data(postfields, (void **) ¤t) == SUCCESS; zend_hash_move_forward(postfields) ) { + char *postval; + char *string_key = NULL; + uint string_key_len; + ulong num_key; SEPARATE_ZVAL(current); convert_to_string_ex(current); diff --git a/ext/curl/tests/bug55767.phpt b/ext/curl/tests/bug55767.phpt new file mode 100644 index 0000000000..321f67ba60 --- /dev/null +++ b/ext/curl/tests/bug55767.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test curl_opt() function with POST params from array with a numeric key +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl sending through GET an POST ***' . "\n"; + + $url = "{$host}/get.php?test=getpost&get_param=Hello%20World"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, array('Hello'=>'World','Foo'=>'Bar',100=>'John Doe')); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl sending through GET an POST *** +string(203) "array(2) { + ["test"]=> + string(7) "getpost" + ["get_param"]=> + string(11) "Hello World" +} +array(3) { + ["Hello"]=> + string(5) "World" + ["Foo"]=> + string(3) "Bar" + [100]=> + string(8) "John Doe" +} +" +===DONE=== |