From 3b27cd22b62a126a13d1904ac744d677529f04d7 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 14 Jun 2007 07:09:31 +0000 Subject: [PATCH] Fixed bug #41566 (SOAP Server not properly generating href attributes) --- NEWS | 2 + ext/soap/php_encoding.c | 8 ++++ ext/soap/tests/bugs/bug41566.phpt | 65 +++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100755 ext/soap/tests/bugs/bug41566.phpt diff --git a/NEWS b/NEWS index 8f1ae9a6d6..dde2a9137b 100644 --- a/NEWS +++ b/NEWS @@ -45,6 +45,8 @@ PHP NEWS other SAPIs disabling options). (Jani) - Fixed bug #41567 (json_encode() double conversion is inconsistent with PHP). (Lucas, Ilia) +- Fixed bug #41566 (SOAP Server not properly generating href attributes). + (Dmitry) - Fixed bug #41561 (Values set with php_admin_* in httpd.conf can be overwritten with ini_set()). (Tony, Dmitry) - Fixed bug #41555 (configure failure: regression caused by fix for #41265). diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 6a2c71d583..14b05e0210 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -297,6 +297,10 @@ static zend_bool soap_check_zval_ref(zval *data, xmlNodePtr node TSRMLS_DC) { } if (attr) { id = (char*)attr->children->content; + smart_str_appendc(&prefix, '#'); + smart_str_appends(&prefix, id); + smart_str_0(&prefix); + id = prefix.c; } else { SOAP_GLOBAL(cur_uniq_ref)++; smart_str_appendl(&prefix, "#ref", 4); @@ -310,6 +314,10 @@ static zend_bool soap_check_zval_ref(zval *data, xmlNodePtr node TSRMLS_DC) { attr = get_attribute_ex(attr, "id", SOAP_1_2_ENC_NAMESPACE); if (attr) { id = (char*)attr->children->content; + smart_str_appendc(&prefix, '#'); + smart_str_appends(&prefix, id); + smart_str_0(&prefix); + id = prefix.c; } else { SOAP_GLOBAL(cur_uniq_ref)++; smart_str_appendl(&prefix, "#ref", 4); diff --git a/ext/soap/tests/bugs/bug41566.phpt b/ext/soap/tests/bugs/bug41566.phpt new file mode 100755 index 0000000000..03ecdde043 --- /dev/null +++ b/ext/soap/tests/bugs/bug41566.phpt @@ -0,0 +1,65 @@ +--TEST-- +Bug #41566 (SOAP Server not properly generating href attributes) +--SKIPIF-- + +--FILE-- +sName = 'newUser'; + + $aUsers = Array(); + $aUsers[] = $aUser; + $aUsers[] = $aUser; + $aUsers[] = $aUser; + $aUsers[] = $aUser; + return $aUsers; +} + +/* Simple User definition */ +Class User { + /** @var string */ + public $sName; +} + +$server = new soapserver(null,array('uri'=>"http://testuri.org", 'soap_version'=>SOAP_1_2)); +$server->addfunction("test"); + +$HTTP_RAW_POST_DATA = << + + + + + +EOF; +ob_start(); +$server->handle($HTTP_RAW_POST_DATA); +echo "ok\n"; + +$HTTP_RAW_POST_DATA = << + + + + + +EOF; +$server->handle($HTTP_RAW_POST_DATA); +echo "ok\n"; +ob_flush(); +--EXPECT-- + +newUser +ok + +returnnewUser +ok -- 2.50.1