diff options
author | Nikita Popov <nikic@php.net> | 2014-07-02 17:33:31 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2014-07-02 17:33:31 +0200 |
commit | d9ebd0f3d696e42d7c7bd2b0176414534aed0ef1 (patch) | |
tree | fe463f5114116d6402653b33ebcb5c45feff3d63 | |
parent | 22882a9d89712ff2b6ebc20a689a89452bba4dcd (diff) | |
download | php-git-d9ebd0f3d696e42d7c7bd2b0176414534aed0ef1.tar.gz |
Fix bug #67497: eval with parse error causes segfault in generator
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | Zend/tests/generators/bug67497.phpt | 19 | ||||
-rw-r--r-- | Zend/zend_generators.c | 1 |
3 files changed, 22 insertions, 0 deletions
@@ -9,6 +9,8 @@ PHP NEWS match). (Bob) . Fixed bug #67091 (make install fails to install libphp5.so on FreeBSD 10.0). (Ferenc) + . Fixed buf #67497 (eval with parse error causes segmentation fault in + generator). (Nikita) - CLI server: . Implemented FR #67429 (CLI server is missing some new HTTP response codes). diff --git a/Zend/tests/generators/bug67497.phpt b/Zend/tests/generators/bug67497.phpt new file mode 100644 index 0000000000..483857b96c --- /dev/null +++ b/Zend/tests/generators/bug67497.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #67467: eval with parse error causes segmentation fault in generator +--FILE-- +<?php + +function gen() { + $a = 1; + yield $a; +} + +@eval('abc'); + +$values = gen(); +$values->next(); + +?> +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index a5313dc1a3..b9722b45a0 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -125,6 +125,7 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished /* A fatal error / die occurred during the generator execution. Trying to clean * up the stack may not be safe in this case. */ if (CG(unclean_shutdown)) { + generator->execute_data = NULL; return; } |