From 1c4d488cc8a368d2ef02e4d20fd741db092dbbca Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 10 Apr 2006 13:29:57 +0000 Subject: [PATCH] Fixed bug #36908 (wsdl default value overrides value in soap request). --- ext/soap/php_encoding.c | 10 +++--- ext/soap/tests/bugs/bug36908.phpt | 46 ++++++++++++++++++++++++++++ ext/soap/tests/bugs/bug36908.wsdl | 51 +++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 4 deletions(-) create mode 100755 ext/soap/tests/bugs/bug36908.phpt create mode 100755 ext/soap/tests/bugs/bug36908.wsdl diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 7cc9c6151e..c57bc6e1ed 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -1130,11 +1130,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