diff options
author | Dmitry Stogov <dmitry@php.net> | 2005-07-07 17:29:25 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2005-07-07 17:29:25 +0000 |
commit | bcd201f522bd63d1aa9d075c399470137d90399b (patch) | |
tree | 456ae7470ba83713ba094aabe86d98daecab687c | |
parent | da7d537d499e3fae94ec36692e43689330ccb8f4 (diff) | |
download | php-git-bcd201f522bd63d1aa9d075c399470137d90399b.tar.gz |
Fixed SIGSEGV on decoding <any> elements
-rw-r--r-- | ext/soap/php_encoding.c | 5 |
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; |