| Current File : /home/mmdealscpanel/yummmdeals.com/alt-php84-pecl-xmlrpc_1.0.0-0.RC3.el8.tar |
tests/003.phpt 0000644 00000003130 15041271047 0007103 0 ustar 00 --TEST--
xmlrpc_encode() Simple test encode array
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$params = array(
"one" => "red",
"two" => "blue",
"three" => "green"
);
$response = xmlrpc_encode($params);
echo $response;
$params = array(
"red",
"blue",
"green"
);
$response = xmlrpc_encode($params);
echo $response;
$params = array(
0 => "red",
1 => "blue",
3 => "green"
);
$response = xmlrpc_encode($params);
echo $response;
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<struct>
<member>
<name>one</name>
<value>
<string>red</string>
</value>
</member>
<member>
<name>two</name>
<value>
<string>blue</string>
</value>
</member>
<member>
<name>three</name>
<value>
<string>green</string>
</value>
</member>
</struct>
</value>
</param>
</params>
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<array>
<data>
<value>
<string>red</string>
</value>
<value>
<string>blue</string>
</value>
<value>
<string>green</string>
</value>
</data>
</array>
</value>
</param>
</params>
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<struct>
<member>
<name>0</name>
<value>
<string>red</string>
</value>
</member>
<member>
<name>1</name>
<value>
<string>blue</string>
</value>
</member>
<member>
<name>3</name>
<value>
<string>green</string>
</value>
</member>
</struct>
</value>
</param>
</params>
tests/bug74975.phpt 0000644 00000001437 15041271047 0010006 0 ustar 00 --TEST--
Bug #74975 Different serialization for classes
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
#[AllowDynamicProperties]
class Foo {
}
class Bar {
public $xmlrpc_type;
public $scalar;
}
$foo = new Foo();
$foo->xmlrpc_type = 'base64';
$foo->scalar = 'foobar';
$bar = new Bar();
$bar->xmlrpc_type = 'base64';
$bar->scalar = 'foobar';
echo xmlrpc_encode([
'foo' => $foo,
'bar' => $bar
]);
?>
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<struct>
<member>
<name>foo</name>
<value>
<base64>Zm9vYmFy </base64>
</value>
</member>
<member>
<name>bar</name>
<value>
<base64>Zm9vYmFy </base64>
</value>
</member>
</struct>
</value>
</param>
</params>
tests/bug50285.phpt 0000644 00000004606 15041271047 0007773 0 ustar 00 --TEST--
Bug #50285 (xmlrpc does not preserve keys in encoded indexed arrays)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
function test1($func, $params) {
return array(1=>'One', 3=>'Three', 5=>'Five');
}
function test2($func, $params) {
return array('One', 'Three', 'Five', 5);
}
function test3($func, $params) {
return array('One', 3 => 'Three', 'Five' => 5, 'Six');
}
function test4($func, $params) {
return array('One', 'Three', 'Five', 'Six' => 6);
}
$server = xmlrpc_server_create();
$result = xmlrpc_server_register_method($server, 'test1', 'test1');
$HTTP_RAW_POST_DATA = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>test1</methodName>
<params />
</methodCall>
EOD;
$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
var_dump(xmlrpc_decode($response));
// ------------
$server = xmlrpc_server_create();
$result = xmlrpc_server_register_method($server, 'test2', 'test2');
$HTTP_RAW_POST_DATA = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>test2</methodName>
<params />
</methodCall>
EOD;
$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
var_dump(xmlrpc_decode($response));
// ------------
$server = xmlrpc_server_create();
$result = xmlrpc_server_register_method($server, 'test3', 'test3');
$HTTP_RAW_POST_DATA = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>test3</methodName>
<params />
</methodCall>
EOD;
$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
var_dump(xmlrpc_decode($response));
// ------------
$server = xmlrpc_server_create();
$result = xmlrpc_server_register_method($server, 'test4', 'test4');
$HTTP_RAW_POST_DATA = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>test4</methodName>
<params />
</methodCall>
EOD;
$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
var_dump(xmlrpc_decode($response));
?>
--EXPECT--
array(3) {
[1]=>
string(3) "One"
[3]=>
string(5) "Three"
[5]=>
string(4) "Five"
}
array(4) {
[0]=>
string(3) "One"
[1]=>
string(5) "Three"
[2]=>
string(4) "Five"
[3]=>
int(5)
}
array(4) {
[0]=>
string(3) "One"
[3]=>
string(5) "Three"
["Five"]=>
int(5)
[4]=>
string(3) "Six"
}
array(4) {
[0]=>
string(3) "One"
[1]=>
string(5) "Three"
[2]=>
string(4) "Five"
["Six"]=>
int(6)
}
tests/bug45555.phpt 0000644 00000001365 15041271047 0007776 0 ustar 00 --TEST--
Bug #45555 (Segfault with invalid non-string as register_introspection_callback)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$options = array ();
$request = xmlrpc_encode_request ("system.describeMethods", $options);
$server = xmlrpc_server_create ();
xmlrpc_server_register_introspection_callback($server, 1);
xmlrpc_server_register_introspection_callback($server, array('foo', 'bar'));
$options = array ('output_type' => 'xml', 'version' => 'xmlrpc');
xmlrpc_server_call_method ($server, $request, NULL, $options);
?>
--EXPECTF--
Warning: xmlrpc_server_call_method(): Invalid callback '1' passed in %s on line %d
Warning: xmlrpc_server_call_method(): Invalid callback 'foo::bar' passed in %s on line %d
tests/005.phpt 0000644 00000001373 15041271047 0007114 0 ustar 00 --TEST--
xmlrpc_encode() Simple test encode type double and String
--CREDITS--
Michel Araujo <araujo_michel@yahoo.com.br>
#PHPSP 2013-08-22
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$response = xmlrpc_encode(3.24234);
echo $response;
$response = xmlrpc_encode(-3.24234);
echo $response;
$response = xmlrpc_encode('Is string');
echo $response;
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<double>3.24234</double>
</value>
</param>
</params>
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<double>-3.24234</double>
</value>
</param>
</params>
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<string>Is string</string>
</value>
</param>
</params>
tests/bug71501.phpt 0000644 00000000736 15041271047 0007765 0 ustar 00 --TEST--
Bug #71501 (xmlrpc_encode_request ignores encoding option)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
$params = 'Lê Trung Hiếu';
echo xmlrpc_encode_request('foo', $params, ['encoding' => 'UTF-8', 'escaping' => 'markup']);
?>
--EXPECT--
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>foo</methodName>
<params>
<param>
<value>
<string>Lê Trung Hiếu</string>
</value>
</param>
</params>
</methodCall>
tests/bug77242.phpt 0000644 00000000431 15041271047 0007765 0 ustar 00 --TEST--
Bug #77242 (heap out of bounds read in xmlrpc_decode())
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
var_dump(xmlrpc_decode(base64_decode("PD94bWwgdmVyc2lvbmVuY29kaW5nPSJJU084ODU5NyKkpKSkpKSkpKSkpKSkpKSkpKSkpKSk")));
?>
--EXPECT--
NULL tests/bug61097.phpt 0000644 00000000544 15041271047 0007773 0 ustar 00 --TEST--
Bug #61097 (Memory leak in xmlrpc functions copying zvals)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$server = xmlrpc_server_create();
$method = 'abc';
xmlrpc_server_register_introspection_callback($server, $method);
xmlrpc_server_register_method($server, 'abc', $method);
echo 'Done';
?>
--EXPECT--
Done
tests/bug18916.phpt 0000644 00000000673 15041271047 0010000 0 ustar 00 --TEST--
Bug #18916 (xmlrpc_set_type() not working)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--INI--
date.timezone="America/Sao_Paulo"
--FILE--
<?php
$params = date("Ymd\TH:i:s", time());
xmlrpc_set_type($params, 'datetime');
echo xmlrpc_encode($params);
?>
--EXPECTF--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<dateTime.iso8601>%dT%d:%d:%d</dateTime.iso8601>
</value>
</param>
</params>
tests/bug44996.phpt 0000644 00000002353 15041271047 0010004 0 ustar 00 --TEST--
Bug #44996 (xmlrpc_decode() ignores time zone on iso8601.datetime)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
function DecodeDatetime($datetime) {
print "\nISO 8601 datetime $datetime\n";
$obj = xmlrpc_decode("<?xml version=\"1.0\"?><methodResponse><params><param><value><dateTime.iso8601>$datetime</dateTime.iso8601></value></param></params></methodResponse>");
print_r($obj);
}
DecodeDatetime("20010909T01:46:40Z");
DecodeDatetime("20010909T00:46:40-01");
DecodeDatetime("2001-09-09T08:46:40+07:00");
DecodeDatetime("2001-09-08T21:46:40-0400");
?>
--EXPECT--
ISO 8601 datetime 20010909T01:46:40Z
stdClass Object
(
[scalar] => 20010909T01:46:40Z
[xmlrpc_type] => datetime
[timestamp] => 1000000000
)
ISO 8601 datetime 20010909T00:46:40-01
stdClass Object
(
[scalar] => 20010909T00:46:40-01
[xmlrpc_type] => datetime
[timestamp] => 1000000000
)
ISO 8601 datetime 2001-09-09T08:46:40+07:00
stdClass Object
(
[scalar] => 2001-09-09T08:46:40+07:00
[xmlrpc_type] => datetime
[timestamp] => 1000000000
)
ISO 8601 datetime 2001-09-08T21:46:40-0400
stdClass Object
(
[scalar] => 2001-09-08T21:46:40-0400
[xmlrpc_type] => datetime
[timestamp] => 1000000000
)
tests/bug70526.phpt 0000644 00000000413 15041271047 0007763 0 ustar 00 --TEST--
Bug #70526 (xmlrpc_set_type returns false on success)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
$params = date("Ymd\TH:i:s", time());
$rv = xmlrpc_set_type($params, 'datetime');
var_dump($rv);
?>
--EXPECT--
bool(true)
tests/007.phpt 0000644 00000000620 15041271047 0007110 0 ustar 00 --TEST--
xmlrpc_decode() Simple test decode type int
--CREDITS--
Michel Araujo <araujo_michel@yahoo.com.br>
#PHPSP 2013-08-22
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<int>1</int>
</value>
</param>
</params>
XML;
$response = xmlrpc_decode($xml);
echo $response;
--EXPECT--
1
tests/004.phpt 0000644 00000000451 15041271047 0007107 0 ustar 00 --TEST--
xmlrpc_encode() Simple test encode int
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$response = xmlrpc_encode(1);
echo $response;
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<int>1</int>
</value>
</param>
</params>
tests/006.phpt 0000644 00000000651 15041271047 0007113 0 ustar 00 --TEST--
xmlrpc_decode() Simple test decode type string
--CREDITS--
Michel Araujo <araujo_michel@yahoo.com.br>
#PHPSP 2013-08-22
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<string>Is string</string>
</value>
</param>
</params>
XML;
$response = xmlrpc_decode($xml);
echo $response;
--EXPECT--
Is string
tests/bug77380.phpt 0000644 00000000520 15041271047 0007767 0 ustar 00 --TEST--
Bug #77380 (Global out of bounds read in xmlrpc base64 code)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
var_dump(xmlrpc_decode(base64_decode("PGJhc2U2ND7CkzwvYmFzZTY0Pgo=")));
?>
--EXPECT--
object(stdClass)#1 (2) {
["scalar"]=>
string(0) ""
["xmlrpc_type"]=>
string(6) "base64"
}
tests/bug42736.phpt 0000644 00000002330 15041271047 0007765 0 ustar 00 --TEST--
Bug #42736 (xmlrpc_server_call_method() crashes)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
class SOAP_Array {
public function get($id){
return $this->add($id);
}
}
$xml = xmlrpc_server_create();
$Myrequest = '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>GetProducts</methodName><params><param><value><dateTime.iso8601>20060922T14:26:19</dateTime.iso8601></value></param></params></methodCall>';
class MyClass {
function GetProducts($dummy, $time){
return array('faultString' => $time);
}
}
$myclass = new MyClass();
xmlrpc_server_register_method($xml, 'GetProducts', array($myclass, 'GetProducts'));
$response = xmlrpc_server_call_method($xml, $Myrequest, null);
var_dump($response);
echo "Done\n";
?>
--EXPECT--
string(402) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>faultString</name>
<value>
<array>
<data>
<value>
<dateTime.iso8601>20060922T14:26:19</dateTime.iso8601>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
"
Done
tests/002.phpt 0000644 00000001440 15041271047 0007104 0 ustar 00 --TEST--
xmlrpc_encode_request() and various arguments
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$r = xmlrpc_encode_request("method", array());
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);
$r = xmlrpc_encode_request("method", 1);
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);
$r = xmlrpc_encode_request("method", 'param');
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);
$r = xmlrpc_encode_request(-1, "");
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);
echo "Done\n";
?>
--EXPECTF--
array(0) {
}
string(6) "method"
array(1) {
[0]=>
int(1)
}
string(6) "method"
array(1) {
[0]=>
string(5) "param"
}
string(6) "method"
array(1) {
[0]=>
string(0) ""
}
string(2) "-1"
Done
tests/bug47818.phpt 0000644 00000001565 15041271047 0010004 0 ustar 00 --TEST--
Bug #47818 (Segfault due to bound callback param)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
class MyXmlRpc {
private $s;
private $method;
function impl($method_name, $params, $user_data){
$this->method = $method_name;
print "Inside impl(): {$this->method}\n";
return array_sum($params);
}
function __construct() {
$this->s = xmlrpc_server_create();
xmlrpc_server_register_method($this->s, 'add', array($this, 'impl'));
}
function call($req) {
return xmlrpc_server_call_method($this->s, $req, null);
}
function getMethod() {return $this->method;}
}
$x = new MyXmlRpc;
$resp = $x->call(xmlrpc_encode_request('add', array(1, 2, 3)));
$method = $x->getMethod();
print "Global scope: $method\n";
?>
--EXPECT--
Inside impl(): add
Global scope: add
tests/bug68027.phpt 0000644 00000002072 15041271047 0007771 0 ustar 00 --TEST--
Bug #68027 (buffer overflow in mkgmtime() function)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
$d = '6-01-01 20:00:00';
xmlrpc_set_type($d, 'datetime');
var_dump($d);
$datetime = "2001-0-08T21:46:40-0400";
$obj = xmlrpc_decode("<?xml version=\"1.0\"?><methodResponse><params><param><value><dateTime.iso8601>$datetime</dateTime.iso8601></value></param></params></methodResponse>");
print_r($obj);
$datetime = "34770-0-08T21:46:40-0400";
$obj = xmlrpc_decode("<?xml version=\"1.0\"?><methodResponse><params><param><value><dateTime.iso8601>$datetime</dateTime.iso8601></value></param></params></methodResponse>");
print_r($obj);
echo "Done\n";
?>
--EXPECTF--
object(stdClass)#1 (3) {
["scalar"]=>
string(16) "6-01-01 20:00:00"
["xmlrpc_type"]=>
string(8) "datetime"
["timestamp"]=>
int(%d)
}
stdClass Object
(
[scalar] => 2001-0-08T21:46:40-0400
[xmlrpc_type] => datetime
[timestamp] => %s
)
stdClass Object
(
[scalar] => 34770-0-08T21:46:40-0400
[xmlrpc_type] => datetime
[timestamp] => %d
)
Done
tests/bug45226.phpt 0000644 00000002156 15041271047 0007770 0 ustar 00 --TEST--
Bug #45226 (xmlrpc_set_type() segfaults with valid ISO8601 date string)
--INI--
date.timezone="America/Sao_Paulo"
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$d = date(DATE_ISO8601);
xmlrpc_set_type($d, 'datetime');
echo xmlrpc_encode_request('method.call', array('date' => $d));
$d = '2008-01-01 20:00:00';
xmlrpc_set_type($d, 'datetime');
echo xmlrpc_encode_request('method.call', array('date' => $d));
?>
--EXPECTF--
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>method.call</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>date</name>
<value>
<dateTime.iso8601>%d-%d-%dT%d:%d:%d%s%d</dateTime.iso8601>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>method.call</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>date</name>
<value>
<dateTime.iso8601>%d-%d-%d %d:%d:%d</dateTime.iso8601>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
tests/bug40576.phpt 0000644 00000002506 15041271047 0007772 0 ustar 00 --TEST--
Bug #40576 (double values are truncated to 6 decimal digits when encoding)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
?>
--INI--
precision=12
--FILE--
<?php
var_dump(xmlrpc_encode(1.123456789));
var_dump(xmlrpc_encode(11234567891010));
var_dump(xmlrpc_encode(11234567));
var_dump(xmlrpc_encode(""));
var_dump(xmlrpc_encode("test"));
var_dump(xmlrpc_encode("1.22222222222222222222222"));
echo "Done\n";
?>
--EXPECT--
string(125) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<double>1.123456789</double>
</value>
</param>
</params>
"
string(130) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<double>1.1234567891E+13</double>
</value>
</param>
</params>
"
string(116) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<int>11234567</int>
</value>
</param>
</params>
"
string(106) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<string/>
</value>
</param>
</params>
"
string(118) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<string>test</string>
</value>
</param>
</params>
"
string(139) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<string>1.22222222222222222222222</string>
</value>
</param>
</params>
"
Done
tests/bug70728_64bit.phpt 0000644 00000001157 15041271047 0011005 0 ustar 00 --TEST--
Bug #70728 (Type Confusion Vulnerability in PHP_to_XMLRPC_worker)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
?>
--FILE--
<?php
$obj = new stdClass;
$obj->xmlrpc_type = 'base64';
$obj->scalar = 0x1122334455;
var_dump(xmlrpc_encode($obj));
var_dump($obj);
?>
--EXPECT--
string(135) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<base64>NzM1ODgyMjkyMDU= </base64>
</value>
</param>
</params>
"
object(stdClass)#1 (2) {
["xmlrpc_type"]=>
string(6) "base64"
["scalar"]=>
int(73588229205)
}
tests/bug50282.phpt 0000644 00000001260 15041271047 0007761 0 ustar 00 --TEST--
Bug #50282 (xmlrpc_encode_request() changes object into array in calling function)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
class One { var $x = 10; }
$o = new One();
var_dump($o);
var_dump(xmlrpc_encode_request('test', $o));
var_dump($o);
?>
--EXPECTF--
object(One)#%d (1) {
["x"]=>
int(10)
}
string(279) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>test</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>x</name>
<value>
<int>10</int>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
"
object(One)#%d (1) {
["x"]=>
int(10)
}
tests/bug37057.phpt 0000644 00000002221 15041271047 0007764 0 ustar 00 --TEST--
Bug #37057 (xmlrpc_decode() may produce arrays with numeric string keys which are unaccessible)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$response='<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>50</name>
<value><string>0.29</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>';
$retval=xmlrpc_decode($response);
var_dump($retval);
var_dump($retval["50"]);
var_dump($retval[50]);
$response='<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>0</name>
<value><string>0.29</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>';
$retval=xmlrpc_decode($response);
var_dump($retval);
var_dump($retval["0"]);
var_dump($retval[0]);
echo "Done\n";
?>
--EXPECT--
array(1) {
[50]=>
string(4) "0.29"
}
string(4) "0.29"
string(4) "0.29"
array(1) {
[0]=>
string(4) "0.29"
}
string(4) "0.29"
string(4) "0.29"
Done
tests/bug38431.phpt 0000644 00000001026 15041271047 0007763 0 ustar 00 --TEST--
Bug #38431 (xmlrpc_get_type() crashes PHP on objects)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
var_dump(xmlrpc_get_type(new stdclass));
var_dump(xmlrpc_get_type(array()));
$var = array(1,2,3);
var_dump(xmlrpc_get_type($var));
$var = array("test"=>1,2,3);
var_dump(xmlrpc_get_type($var));
$var = array("test"=>1,"test2"=>2);
var_dump(xmlrpc_get_type($var));
echo "Done\n";
?>
--EXPECT--
string(5) "array"
string(5) "array"
string(5) "array"
string(5) "mixed"
string(6) "struct"
Done
tests/bug72647.phpt 0000644 00000001024 15041271047 0007770 0 ustar 00 --TEST--
Bug #72647 (xmlrpc_encode() unexpected output after referencing array elements)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
$ar = array(4, "a", 7);
$v = &$ar[1];
unset($v);
echo xmlrpc_encode($ar);
?>
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<array>
<data>
<value>
<int>4</int>
</value>
<value>
<string>a</string>
</value>
<value>
<int>7</int>
</value>
</data>
</array>
</value>
</param>
</params>
tests/bug70728.phpt 0000644 00000001161 15041271047 0007770 0 ustar 00 --TEST--
Bug #70728 (Type Confusion Vulnerability in PHP_to_XMLRPC_worker)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
?>
--FILE--
<?php
$obj = new stdClass;
$obj->xmlrpc_type = 'base64';
$obj->scalar = 0x1122334455;
var_dump(xmlrpc_encode($obj));
var_dump($obj);
?>
--EXPECT--
string(135) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<base64>NzM1ODgyMjkyMDU= </base64>
</value>
</param>
</params>
"
object(stdClass)#1 (2) {
["xmlrpc_type"]=>
string(6) "base64"
["scalar"]=>
float(73588229205)
}
tests/bug72155.phpt 0000644 00000000731 15041271047 0007766 0 ustar 00 --TEST--
Bug #72155 (use-after-free caused by get_zval_xmlrpc_type)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
if (false !== strpos(PHP_OS, "WIN")) {
$fl = "c:\\windows\\explorer.exe";
} else {
$fl = "/etc/passwd";
}
$var0 = fopen($fl,"r");
$var1 = xmlrpc_encode($var0);
var_dump($var1);
?>
--EXPECT--
string(109) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<int>5</int>
</value>
</param>
</params>
"
tests/001.phpt 0000644 00000001520 15041271047 0007102 0 ustar 00 --TEST--
xmlrpc_encode_request() with wrong arguments
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
var_dump(xmlrpc_encode_request(-1, 1));
var_dump(xmlrpc_encode_request("", 1));
var_dump(xmlrpc_encode_request(3.4, 1));
echo "Done\n";
?>
--EXPECTF--
string(174) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>-1</methodName>
<params>
<param>
<value>
<int>1</int>
</value>
</param>
</params>
</methodCall>
"
string(160) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName/>
<params>
<param>
<value>
<int>1</int>
</value>
</param>
</params>
</methodCall>
"
string(175) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>3.4</methodName>
<params>
<param>
<value>
<int>1</int>
</value>
</param>
</params>
</methodCall>
"
Done
tests/bug51288.phpt 0000644 00000000542 15041271047 0007772 0 ustar 00 --TEST--
Bug #51288 (CVE-2010-0397, NULL pointer deref when no <methodName> in request)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$method = NULL;
$req = '<?xml version="1.0"?><methodCall></methodCall>';
var_dump(xmlrpc_decode_request($req, $method));
var_dump($method);
echo "Done\n";
?>
--EXPECT--
NULL
NULL
Done
tests/bug61264.phpt 0000644 00000000531 15041271047 0007763 0 ustar 00 --TEST--
Bug #61264: xmlrpc_parse_method_descriptions leaks temporary variable
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<a>
<b>foo</b>
</a>
XML;
var_dump(xmlrpc_parse_method_descriptions($xml));
?>
--EXPECT--
array(1) {
["b"]=>
string(3) "foo"
}
tests/bug42189.phpt 0000644 00000000427 15041271047 0007774 0 ustar 00 --TEST--
Bug #42189 (xmlrpc_get_type() crashes PHP on invalid dates)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$a = '~~~~~~~~~~~~~~~~~~';
$ok = xmlrpc_set_type($a, 'datetime');
var_dump($ok);
echo "Done\n";
?>
--EXPECT--
bool(false)
Done
tests/bug45556.phpt 0000644 00000002110 15041271047 0007764 0 ustar 00 --TEST--
Bug #45556 (Return value from callback isn't freed)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$options = array ();
$request = xmlrpc_encode_request ("system.describeMethods", $options);
$server = xmlrpc_server_create ();
function foo() { return 11111; }
class bar {
static public function test() {
return 'foo';
}
}
xmlrpc_server_register_introspection_callback($server, 'foobar');
xmlrpc_server_register_introspection_callback($server, array('bar', 'test'));
xmlrpc_server_register_introspection_callback($server, array('foo', 'bar'));
$options = array ('output_type' => 'xml', 'version' => 'xmlrpc');
xmlrpc_server_call_method ($server, $request, NULL, $options);
?>
--EXPECTF--
Warning: xmlrpc_server_call_method(): Invalid callback 'foobar' passed in %s on line %d
Warning: xmlrpc_server_call_method(): XML parse error: [line 1, column 1, message: %s] Unable to add introspection data returned from bar::test() in %s on line %d
Warning: xmlrpc_server_call_method(): Invalid callback 'foo::bar' passed in %s on line %d
tests/bug40576_64bit.phpt 0000644 00000002473 15041271047 0011005 0 ustar 00 --TEST--
Bug #40576 (double values are truncated to 6 decimal digits when encoding)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
?>
--INI--
precision=12
--FILE--
<?php
var_dump(xmlrpc_encode(1.123456789));
var_dump(xmlrpc_encode(11234567891010));
var_dump(xmlrpc_encode(11234567));
var_dump(xmlrpc_encode(""));
var_dump(xmlrpc_encode("test"));
var_dump(xmlrpc_encode("1.22222222222222222222222"));
echo "Done\n";
?>
--EXPECT--
string(125) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<double>1.123456789</double>
</value>
</param>
</params>
"
string(119) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<int>-1066555326</int>
</value>
</param>
</params>
"
string(116) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<int>11234567</int>
</value>
</param>
</params>
"
string(106) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<string/>
</value>
</param>
</params>
"
string(118) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<string>test</string>
</value>
</param>
</params>
"
string(139) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
<value>
<string>1.22222222222222222222222</string>
</value>
</param>
</params>
"
Done
tests/bug50761.phpt 0000644 00000003107 15041271047 0007765 0 ustar 00 --TEST--
Bug #50761 (system.multiCall crashes)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$req = '<?xml version="1.0"?>
<methodCall>
<methodName>system.multiCall</methodName>
<params><param><value><array><data>
<value><struct>
<member><name>methodName</name><value><string>testMethodA</string></value></member>
<member><name>params</name><value><array><data><value><string>A</string>
</value></data></array></value></member>
</struct></value>
<value><struct>
<member><name>methodName</name><value><string>testMethodB</string></value></member>
<member><name>params</name><value><array><data><value><string>B</string>
</value></data></array></value></member>
</struct></value>
</data></array></value></param></params>
</methodCall>';
function testA($methodName, $params, $var){ return "C"; }
function testB($methodName, $params, $var){ return "D"; }
$server = xmlrpc_server_create();
xmlrpc_server_register_method($server, 'testMethodA', 'testA');
xmlrpc_server_register_method($server, 'testMethodB', 'testB');
$res = xmlrpc_server_call_method($server, $req, null);
echo $res;
?>
--EXPECT--
<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<array>
<data>
<value>
<string>C</string>
</value>
</data>
</array>
</value>
<value>
<array>
<data>
<value>
<string>D</string>
</value>
</data>
</array>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>