summaryrefslogtreecommitdiff
path: root/ext/soap/tests/bugs/bug42326.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/soap/tests/bugs/bug42326.phpt')
-rwxr-xr-xext/soap/tests/bugs/bug42326.phpt49
1 files changed, 49 insertions, 0 deletions
diff --git a/ext/soap/tests/bugs/bug42326.phpt b/ext/soap/tests/bugs/bug42326.phpt
new file mode 100755
index 0000000000..2e6c7c3501
--- /dev/null
+++ b/ext/soap/tests/bugs/bug42326.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Bug #42326 (SoapServer crash)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+soap.wsdl_cache_enabled=0
+--FILE--
+<?php
+$request = <<<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.com/"><SOAP-ENV:Body><ns1:GetProductsRequest><time></time></ns1:GetProductsRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
+EOF;
+
+
+$soap_admin_classmap = array('productDetailsType' => 'SOAP_productDetailsType',
+ 'GetProductsRequest' => 'SOAP_GetProductsRequest',
+ 'GetProductsResponse' => 'SOAP_GetProductsResponse');
+
+class SOAP_productDetailsType {
+ public $id = 0;
+}
+
+class SOAP_GetProductsRequest {
+ public $time = '';
+}
+
+class SOAP_GetProductsResponse {
+ public $products;
+ function __construct(){
+ $this->products = new SOAP_productDetailsType();
+
+ }
+}
+
+class SOAP_Admin {
+ public function GetProducts($time){
+ return new SOAP_GetProductsResponse();
+ }
+}
+
+$soap = new SoapServer(dirname(__FILE__).'/bug42326.wsdl', array('classmap' => $soap_admin_classmap));
+$soap->setClass('SOAP_Admin');
+ob_start();
+$soap->handle($request);
+ob_end_clean();
+echo "ok\n";
+?>
+--EXPECT--
+ok