com php-src: Fix bug #69720: Null pointer dereference in phar_get_fp_offset(): ext/phar/tests/bug697 20.phar ext/phar/tests/bug69720.phpt ext/
phar/util.c

From: Date: Mon, 28 Sep 2015 22:56:51 +0000
Subject: com php-src: Fix bug #69720: Null pointer dereference in phar_get_fp_offset(): ext/phar/tests/bug697 20.phar ext/phar/tests/bug69720.phpt ext/
phar/util.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-89189@lists.php.net to get a copy of this message
Commit: d698f0ae51f67c9cce870b09c59df3d6ba959244 Author: Stanislav Malyshev <stas@php.net> Mon, 28 Sep 2015 15:51:59 -0700 Parents: bb98ed600ab6787d9d367927d49439be9a83441e Branches: PHP-5.5 PHP-5.6 PHP-7.0 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d698f0ae51f67c9cce870b09c59df3d6ba959244 Log: 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 2c41adf..69da7b9 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 (#89189) next »