summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-07-07 17:29:25 +0000
committerDmitry Stogov <dmitry@php.net>2005-07-07 17:29:25 +0000
commitbcd201f522bd63d1aa9d075c399470137d90399b (patch)
tree456ae7470ba83713ba094aabe86d98daecab687c
parentda7d537d499e3fae94ec36692e43689330ccb8f4 (diff)
downloadphp-git-bcd201f522bd63d1aa9d075c399470137d90399b.tar.gz
Fixed SIGSEGV on decoding <any> elements
-rw-r--r--ext/soap/php_encoding.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index b0842a1fae..4f36b67152 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -993,9 +993,12 @@ static void model_to_zval_object(zval *ret, sdlContentModelPtr model, xmlNodePtr
while (node != NULL) {
if (get_zval_property(ret, (char*)node->name TSRMLS_CC) == NULL) {
zval* val = master_to_zval(get_conversion(XSD_ANYXML), node);
- while (node->next != NULL &&
+ while (Z_TYPE_P(val) == IS_STRING && node->next != NULL &&
get_zval_property(ret, (char*)node->next->name TSRMLS_CC) == NULL) {
zval* val2 = master_to_zval(get_conversion(XSD_ANYXML), node->next);
+ if (Z_TYPE_P(val2) != IS_STRING) {
+ break;
+ }
add_string_to_string(val, val, val2);
zval_ptr_dtor(&val2);
node = node->next;