]> granicus.if.org Git - php/commitdiff
Fixed SIGSEGV on decoding <any> elements
authorDmitry Stogov <dmitry@php.net>
Thu, 7 Jul 2005 17:29:39 +0000 (17:29 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 7 Jul 2005 17:29:39 +0000 (17:29 +0000)
ext/soap/php_encoding.c

index b0842a1fae416c7d1febe3846bf02aefb61bf1dc..4f36b67152a144211cd550790c3c2ee3313e6eed 100644 (file)
@@ -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;