From: Greg Beaver Date: Fri, 26 Sep 2008 16:30:10 +0000 (+0000) Subject: MFB: fix bug #46178: memory leak in ext/phar X-Git-Tag: BEFORE_HEAD_NS_CHANGE~328 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=08139f40b39eb83e317a24be4b16fb724e416d89;p=php MFB: fix bug #46178: memory leak in ext/phar --- diff --git a/ext/phar/phar.c b/ext/phar/phar.c index b12628a777..4c351751f9 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -440,6 +440,11 @@ int phar_entry_delref(phar_entry_data *idata TSRMLS_DC) /* {{{ */ if (idata->fp && idata->fp != idata->phar->fp && idata->fp != idata->phar->ufp && idata->fp != idata->internal_file->fp) { php_stream_close(idata->fp); } + /* if phar_get_or_create_entry_data returns a sub-directory, we have to free it */ + if (idata->internal_file->is_temp_dir) { + destroy_phar_manifest_entry((void *)idata->internal_file); + efree(idata->internal_file); + } } phar_archive_delref(idata->phar TSRMLS_CC); diff --git a/ext/phar/tests/bug46178.phpt b/ext/phar/tests/bug46178.phpt new file mode 100644 index 0000000000..9dab621485 --- /dev/null +++ b/ext/phar/tests/bug46178.phpt @@ -0,0 +1,20 @@ +--TEST-- +Phar: PHP bug #46178: "memory leak in ext/phar" +--SKIPIF-- + +--INI-- +phar.require_hash=0 +phar.readonly=0 +--FILE-- +addEmptyDir('long/path'); +?> +===DONE=== +--CLEAN-- + +--EXPECT-- +===DONE=== \ No newline at end of file