Skip to content
Permalink
Browse files Browse the repository at this point in the history
Fix bug #73768 - Memory corruption when loading hostile phar
  • Loading branch information
smalyshev committed Dec 30, 2016
1 parent ca46d0a commit b28b8b2
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
3 changes: 1 addition & 2 deletions ext/phar/phar.c
Expand Up @@ -981,15 +981,14 @@ static int phar_parse_pharfile(php_stream *fp, char *fname, int fname_len, char
/* if the alias is stored we enforce it (implicit overrides explicit) */
if (alias && alias_len && (alias_len != (int)tmp_len || strncmp(alias, buffer, tmp_len)))
{
buffer[tmp_len] = '\0';
php_stream_close(fp);

if (signature) {
efree(signature);
}

if (error) {
spprintf(error, 0, "cannot load phar \"%s\" with implicit alias \"%s\" under different alias \"%s\"", fname, buffer, alias);
spprintf(error, 0, "cannot load phar \"%s\" with implicit alias \"%.*s\" under different alias \"%s\"", fname, tmp_len, buffer, alias);
}

efree(savebuf);
Expand Down
Binary file added ext/phar/tests/bug73768.phar
Binary file not shown.
16 changes: 16 additions & 0 deletions ext/phar/tests/bug73768.phpt
@@ -0,0 +1,16 @@
--TEST--
Phar: PHP bug #73768: Memory corruption when loading hostile phar
--SKIPIF--
<?php if (!extension_loaded("phar")) die("skip"); ?>
--FILE--
<?php
chdir(__DIR__);
try {
$p = Phar::LoadPhar('bug73768.phar', 'alias.phar');
echo "OK\n";
} catch(PharException $e) {
echo $e->getMessage();
}
?>
--EXPECTF--
cannot load phar "%sbug73768.phar" with implicit alias "" under different alias "alias.phar"

0 comments on commit b28b8b2

Please sign in to comment.