From 07d7750487b924380c2d284c5753a963501303bb Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 10 Apr 2006 13:29:48 +0000 Subject: [PATCH] Fixed bug #36908 (wsdl default value overrides value in soap request). --- NEWS | 2 ++ ext/soap/php_encoding.c | 10 +++--- ext/soap/tests/bugs/bug36908.phpt | 46 ++++++++++++++++++++++++++++ ext/soap/tests/bugs/bug36908.wsdl | 51 +++++++++++++++++++++++++++++++ 4 files changed, 105 insertions(+), 4 deletions(-) create mode 100755 ext/soap/tests/bugs/bug36908.phpt create mode 100755 ext/soap/tests/bugs/bug36908.wsdl diff --git a/NEWS b/NEWS index 17765892ae..1153767eee 100644 --- a/NEWS +++ b/NEWS @@ -26,6 +26,8 @@ PHP NEWS - Fixed bug #36941 (ArrayIterator does not clone itself). (Marcus) - Fixed bug #36934 (OCILob->read() doesn't move internal pointer when reading 0's). (Tony) +- Fixed bug #36908 (wsdl default value overrides value in soap request). + (Dmitry) - Fixed bug #36898 (__set() leaks in classes extending internal ones). (Tony, Dmitry) - Fixed bug #36886 (User filters can leak buckets in some situations). (Ilia) diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 683e35ef59..a4dfb012ab 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -1128,11 +1128,13 @@ static void model_to_zval_object(zval *ret, sdlContentModelPtr model, xmlNodePtr { switch (model->kind) { case XSD_CONTENT_ELEMENT: - if (model->u.element->name) { - xmlNodePtr node = get_node(data->children, model->u.element->name); - if (node) { - zval *val; + if (model->u.element->name) { + xmlNodePtr node = get_node(data->children, model->u.element->name); + if (node) { + zval *val; + + node = check_and_resolve_href(node); if (node && node->children && node->children->content) { if (model->u.element->fixed && strcmp(model->u.element->fixed,node->children->content) != 0) { soap_error3(E_ERROR, "Encoding: Element '%s' has fixed value '%s' (value '%s' is not allowed)", model->u.element->name, model->u.element->fixed, node->children->content); diff --git a/ext/soap/tests/bugs/bug36908.phpt b/ext/soap/tests/bugs/bug36908.phpt new file mode 100755 index 0000000000..cd0ea8b2e5 --- /dev/null +++ b/ext/soap/tests/bugs/bug36908.phpt @@ -0,0 +1,46 @@ +--TEST-- +Bug #36908 (wsdl default value overrides value in soap request) +--SKIPIF-- + +--INI-- +soap.wsdl_cache_enabled=0 +--FILE-- +region_id; + } +} +$input = +' + + + + + + + + + 9 + +'; +ini_set('soap.wsdl_cache_enabled', false); +$server = new SoapServer(dirname(__FILE__)."/bug36908.wsdl"); +$server->setClass("PublisherService"); +$server->handle($input); +?> +--EXPECT-- + +9 diff --git a/ext/soap/tests/bugs/bug36908.wsdl b/ext/soap/tests/bugs/bug36908.wsdl new file mode 100755 index 0000000000..f3be3f6304 --- /dev/null +++ b/ext/soap/tests/bugs/bug36908.wsdl @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.40.0