]> granicus.if.org Git - php/commitdiff
check for NULL and avoid crashes
authorAntony Dovgal <tony2001@php.net>
Mon, 25 Jan 2016 11:29:51 +0000 (14:29 +0300)
committerAntony Dovgal <tony2001@php.net>
Mon, 25 Jan 2016 11:30:33 +0000 (14:30 +0300)
ext/soap/php_encoding.c

index 5d9064af70a03aa26b7de93e26ad71a50a947dd8..1fdc5a878893867f3f318136f41c96e6c000d0df 100644 (file)
@@ -3014,7 +3014,11 @@ static xmlNodePtr to_xml_list(encodeTypePtr enc, zval *data, int style, xmlNodeP
                        xmlFreeNode(dummy);
                } ZEND_HASH_FOREACH_END();
                smart_str_0(&list);
-               xmlNodeSetContentLen(ret, BAD_CAST(ZSTR_VAL(list.s)), ZSTR_LEN(list.s));
+               if (list.s) {
+                       xmlNodeSetContentLen(ret, BAD_CAST(ZSTR_VAL(list.s)), ZSTR_LEN(list.s));
+               } else {
+                       xmlNodeSetContentLen(ret, BAD_CAST(""), 0);
+               }
                smart_str_free(&list);
        } else {
                zval tmp;
@@ -3054,7 +3058,11 @@ static xmlNodePtr to_xml_list(encodeTypePtr enc, zval *data, int style, xmlNodeP
                        start = next;
                }
                smart_str_0(&list);
-               xmlNodeSetContentLen(ret, BAD_CAST(ZSTR_VAL(list.s)), ZSTR_LEN(list.s));
+               if (list.s) {
+                       xmlNodeSetContentLen(ret, BAD_CAST(ZSTR_VAL(list.s)), ZSTR_LEN(list.s));
+               } else {
+                       xmlNodeSetContentLen(ret, BAD_CAST(""), 0);
+               }
                smart_str_free(&list);
                efree(str);
                if (data == &tmp) {zval_dtor(&tmp);}