]> granicus.if.org Git - php/commitdiff
Handle empty (NULL) stmt in ast_export
authornikita2206 <inefedor@gmail.com>
Thu, 9 Jul 2015 14:43:50 +0000 (18:43 +0400)
committerNikita Popov <nikic@php.net>
Thu, 16 Jul 2015 20:31:36 +0000 (22:31 +0200)
Zend/tests/assert/expect_empty_stmt_bug.phpt [new file with mode: 0644]
Zend/zend_ast.c

diff --git a/Zend/tests/assert/expect_empty_stmt_bug.phpt b/Zend/tests/assert/expect_empty_stmt_bug.phpt
new file mode 100644 (file)
index 0000000..f5dcff3
--- /dev/null
@@ -0,0 +1,11 @@
+--TEST--
+Empty statement in assert() shouldn't segfault
+--FILE--
+<?php
+
+assert((function () { return true;; })());
+echo "ok";
+
+?>
+--EXPECT--
+ok
index 714a1443b087c96e93c92193fee894151ffa450d..d36ce0b2ad5bdc91eacf4e0718fd4cebb94950a1 100644 (file)
@@ -783,6 +783,10 @@ static void zend_ast_export_var_list(smart_str *str, zend_ast_list *list, int in
 
 static void zend_ast_export_stmt(smart_str *str, zend_ast *ast, int indent)
 {
+       if (!ast) {
+               return;
+       }
+
        if (ast->kind == ZEND_AST_STMT_LIST ||
            ast->kind == ZEND_AST_TRAIT_ADAPTATIONS) {
                zend_ast_list *list = (zend_ast_list*)ast;