Skip to content

Commit c33e504

Browse files
committed
Merge branch 'PHP-7.4'
* PHP-7.4: Fix #79503: Memory leak on duplicate metadata
2 parents 6b2c002 + c705079 commit c33e504

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

ext/phar/tar.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,17 @@ static int phar_tar_process_metadata(phar_entry_info *entry, php_stream *fp) /*
181181
}
182182

183183
if (entry->filename_len == sizeof(".phar/.metadata.bin")-1 && !memcmp(entry->filename, ".phar/.metadata.bin", sizeof(".phar/.metadata.bin")-1)) {
184+
if (Z_TYPE(entry->phar->metadata) != IS_UNDEF) {
185+
efree(metadata);
186+
return FAILURE;
187+
}
184188
entry->phar->metadata = entry->metadata;
185189
ZVAL_UNDEF(&entry->metadata);
186190
} else if (entry->filename_len >= sizeof(".phar/.metadata/") + sizeof("/.metadata.bin") - 1 && NULL != (mentry = zend_hash_str_find_ptr(&(entry->phar->manifest), entry->filename + sizeof(".phar/.metadata/") - 1, entry->filename_len - (sizeof("/.metadata.bin") - 1 + sizeof(".phar/.metadata/") - 1)))) {
191+
if (Z_TYPE(mentry->metadata) != IS_UNDEF) {
192+
efree(metadata);
193+
return FAILURE;
194+
}
187195
/* transfer this metadata to the entry it refers */
188196
mentry->metadata = entry->metadata;
189197
ZVAL_UNDEF(&entry->metadata);

ext/phar/tests/bug79503.phar

3.91 KB
Binary file not shown.

ext/phar/tests/bug79503.phpt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
--TEST--
2+
Bug #79503 (Memory leak on duplicate metadata)
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('phar')) die('skip phar extension not available');
6+
?>
7+
--FILE--
8+
<?php
9+
try {
10+
new Phar(__DIR__ . '/bug79503.phar');
11+
} catch (UnexpectedValueException $ex) {
12+
echo $ex->getMessage();
13+
}
14+
?>
15+
--EXPECTF--
16+
phar error: tar-based phar "%s%ebug79503.phar" has invalid metadata in magic file ".phar/.metadata.bin"

0 commit comments

Comments
 (0)