mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Fix memory leak on failure in phar_convert_to_other()
Closes GH-19755.
This commit is contained in:
1
NEWS
1
NEWS
@@ -49,6 +49,7 @@ PHP NEWS
|
||||
. Fixed memory leaks when verifying OpenSSL signature. (Girgias)
|
||||
. Fix memory leak in phar tar temporary file error handling code. (nielsdos)
|
||||
. Fix metadata leak when phar convert logic fails. (nielsdos)
|
||||
. Fix memory leak on failure in phar_convert_to_other(). (nielsdos)
|
||||
|
||||
- Standard:
|
||||
. Fixed bug GH-16649 (UAF during array_splice). (alexandre-daubois)
|
||||
|
||||
@@ -2229,6 +2229,12 @@ static zend_object *phar_convert_to_other(phar_archive_data *source, int convert
|
||||
PHAR_G(last_phar) = NULL;
|
||||
PHAR_G(last_phar_name) = PHAR_G(last_alias) = NULL;
|
||||
|
||||
php_stream *tmp_fp = php_stream_fopen_tmpfile();
|
||||
if (tmp_fp == NULL) {
|
||||
zend_throw_exception_ex(phar_ce_PharException, 0, "unable to create temporary file");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
phar = (phar_archive_data *) ecalloc(1, sizeof(phar_archive_data));
|
||||
/* set whole-archive compression and type from parameter */
|
||||
phar->flags = flags;
|
||||
@@ -2253,11 +2259,7 @@ static zend_object *phar_convert_to_other(phar_archive_data *source, int convert
|
||||
zend_hash_init(&phar->virtual_dirs, sizeof(char *),
|
||||
zend_get_hash_value, NULL, 0);
|
||||
|
||||
phar->fp = php_stream_fopen_tmpfile();
|
||||
if (phar->fp == NULL) {
|
||||
zend_throw_exception_ex(phar_ce_PharException, 0, "unable to create temporary file");
|
||||
return NULL;
|
||||
}
|
||||
phar->fp = tmp_fp;
|
||||
phar->fname = source->fname;
|
||||
phar->fname_len = source->fname_len;
|
||||
phar->is_temporary_alias = source->is_temporary_alias;
|
||||
|
||||
Reference in New Issue
Block a user