com php-src: Merge branch 'PHP-5.5' into PHP-5.6: ext/phar/tests/bug69720.phar ext/phar/tests/bug69720.phpt ext/phar/util.c

From: Date: Tue, 29 Sep 2015 23:31:32 +0000
Subject: com php-src: Merge branch 'PHP-5.5' into PHP-5.6: ext/phar/tests/bug69720.phar ext/phar/tests/bug69720.phpt ext/phar/util.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-89228@lists.php.net to get a copy of this message
Commit: 791a49ac7ad24dfab83bde7730bffd4a4354c8df Author: Stanislav Malyshev <stas@php.net> Mon, 28 Sep 2015 16:59:46 -0700 Committer: Ferenc Kovacs <tyrael@php.net> Wed, 30 Sep 2015 01:31:32 +0200 Parents: fd9da7ac09ca490e885863edf082796e199023a0 Branches: PHP-5.6.14 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=791a49ac7ad24dfab83bde7730bffd4a4354c8df Log: Merge branch 'PHP-5.5' into PHP-5.6 * PHP-5.5: Fix bug #69720: Null pointer dereference in phar_get_fp_offset() Bugs: https://bugs.php.net/69720 Changed paths: A ext/phar/tests/bug69720.phar A ext/phar/tests/bug69720.phpt M ext/phar/util.c Diff: diff --git a/ext/phar/tests/bug69720.phar b/ext/phar/tests/bug69720.phar new file mode 100644 index 0000000..f62fb11 Binary files /dev/null and b/ext/phar/tests/bug69720.phar differ diff --git a/ext/phar/tests/bug69720.phpt b/ext/phar/tests/bug69720.phpt new file mode 100644 index 0000000..43b701d --- /dev/null +++ b/ext/phar/tests/bug69720.phpt @@ -0,0 +1,40 @@ +--TEST-- +Phar - bug #69720 - Null pointer dereference in phar_get_fp_offset() +--SKIPIF-- +<?php if (!extension_loaded("phar")) die("skip"); ?> +--FILE-- +<?php +try { + // open an existing phar + $p = new Phar(__DIR__."/bug69720.phar",0); + // Phar extends SPL's DirectoryIterator class + echo $p->getMetadata(); + foreach (new RecursiveIteratorIterator($p) as $file) { + // $file is a PharFileInfo class, and inherits from SplFileInfo + $temp=""; + $temp= $file->getFileName() . "\n"; + $temp.=file_get_contents($file->getPathName()) . "\n"; // display contents + var_dump($file->getMetadata()); + } +} + catch (Exception $e) { + echo 'Could not open Phar: ', $e; +} +?> +--EXPECTF-- + +MY_METADATA_NULL + +Warning: file_get_contents(phar:///%s): failed to open stream: phar error: "test.php" is not a file in phar "%s.phar" in %s.php on line %d +array(1) { + ["whatever"]=> + int(123) +} +object(DateTime)#2 (3) { + ["date"]=> + string(26) "2000-01-01 00:00:00.000000" + ["timezone_type"]=> + int(3) + ["timezone"]=> + string(3) "UTC" +} diff --git a/ext/phar/util.c b/ext/phar/util.c index 746edf3..fb3c8be 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -494,7 +494,11 @@ really_get_entry: (*ret)->is_tar = entry->is_tar; (*ret)->fp = phar_get_efp(entry, 1 TSRMLS_CC); if (entry->link) { - (*ret)->zero = phar_get_fp_offset(phar_get_link_source(entry TSRMLS_CC) TSRMLS_CC); + phar_entry_info *link = phar_get_link_source(entry TSRMLS_CC); + if(!link) { + return FAILURE; + } + (*ret)->zero = phar_get_fp_offset(link TSRMLS_CC); } else { (*ret)->zero = phar_get_fp_offset(entry TSRMLS_CC); }

« previous php.cvs (#89228) next »