diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-04-24 14:51:44 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-04-24 18:14:53 +0200 |
commit | 3151676f520555bfadb39ea76779e93552d13fc1 (patch) | |
tree | db50b7dd47917fe50a5aa46e307943407de2dfb5 | |
parent | 36764185688675b52fc96c14359f466538cda129 (diff) | |
download | php-git-3151676f520555bfadb39ea76779e93552d13fc1.tar.gz |
Fix #79514: Memory leaks while including unexistent file
We have to destroy (un-opened) ZEND_HANDLE_FILENAMEs.
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | Zend/tests/bug79514.phpt | 13 | ||||
-rw-r--r-- | Zend/zend_stream.c | 2 |
3 files changed, 17 insertions, 0 deletions
@@ -6,6 +6,8 @@ PHP NEWS - Core: . Fixed bug #78434 (Generator yields no items after valid() call). (Nikita) . Fixed bug #79477 (casting object into array creates references). (Nikita) + . Fixed bug #79514 (Memory leaks while including unexistent file). (cmb, + Nikita) - DOM: . Fixed bug #78221 (DOMNode::normalize() doesn't remove empty text nodes). diff --git a/Zend/tests/bug79514.phpt b/Zend/tests/bug79514.phpt new file mode 100644 index 0000000000..5182489964 --- /dev/null +++ b/Zend/tests/bug79514.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #79514 (Memory leaks while including unexistent file) +--FILE-- +<?php +$mem1 = memory_get_usage(true); +for ($i = 0; $i < 100000; $i++) { + @include __DIR__ . '/bug79514.doesnotexist'; +} +$mem2 = memory_get_usage(true); +var_dump($mem2 - $mem1 < 100000); +?> +--EXPECT-- +bool(true) diff --git a/Zend/zend_stream.c b/Zend/zend_stream.c index 3890248a26..38b145736b 100644 --- a/Zend/zend_stream.c +++ b/Zend/zend_stream.c @@ -238,6 +238,8 @@ ZEND_API int zend_compare_file_handles(zend_file_handle *fh1, zend_file_handle * return 0; } switch (fh1->type) { + case ZEND_HANDLE_FILENAME: + return strcmp(fh1->filename, fh2->filename) == 0; case ZEND_HANDLE_FP: return fh1->handle.fp == fh2->handle.fp; case ZEND_HANDLE_STREAM: |