|
1 | 1 | --TEST--
|
2 |
| -GH-13836 (Renaming a file in a Phar to an already existing filename causes a NULL pointer dereference) |
3 |
| ---EXTENSIONS-- |
4 |
| -phar |
| 2 | +GH-13833 (Applying zero offset to null pointer in zend_hash.c) |
5 | 3 | --INI--
|
6 | 4 | phar.require_hash=0
|
7 | 5 | phar.readonly=0
|
8 | 6 | --FILE--
|
9 | 7 | <?php
|
10 |
| -$fname = __DIR__ . '/gh13836.phar'; |
| 8 | +$fname = __DIR__ . '/gh13833.phar'; |
| 9 | +$pname = 'phar://' . $fname; |
| 10 | +$file = "<?php |
| 11 | +Phar::mapPhar('hio'); |
| 12 | +__HALT_COMPILER(); ?>"; |
| 13 | +$files = array(); |
| 14 | +$files['a'] = 'a'; |
| 15 | +include 'files/phar_test.inc'; |
| 16 | +include $fname; |
11 | 17 |
|
12 |
| -$phar = new Phar($fname, 0, 'a.phar'); |
13 |
| -$phar['x'] = 'hi1'; |
14 |
| -$phar['y'] = 'hi2'; |
| 18 | +$file = "<?php __HALT_COMPILER(); ?>"; |
| 19 | +$files['a'] = array('cont' => 'a'); |
| 20 | +include 'files/phar_test.inc'; |
15 | 21 |
|
16 |
| -var_dump(rename("phar://a.phar/x", "phar://a.phar/y")); |
17 |
| - |
18 |
| -var_dump(isset($phar['x'])); |
19 |
| -var_dump($phar['y']); |
| 22 | +$phar = new Phar($fname); |
| 23 | +$phar->setMetadata((object) ['my' => 'friend']); |
| 24 | +// NOTE: Phar will use the cached value of metadata if setMetaData was called on that Phar path before. |
| 25 | +// Save the writes to the phar and use a different file path. |
| 26 | +$fname_new = "$fname.copy.phar"; |
| 27 | +copy($fname, $fname_new); |
| 28 | +try { |
| 29 | + new Phar($fname_new); |
| 30 | +} catch (UnexpectedValueException $e) { |
| 31 | + echo $e->getMessage(), "\n"; |
| 32 | +} |
20 | 33 | ?>
|
| 34 | +--EXTENSIONS-- |
| 35 | +phar |
21 | 36 | --CLEAN--
|
22 | 37 | <?php
|
23 |
| -unlink(__DIR__ . '/gh13836.phar'); |
| 38 | +unlink(__DIR__ . '/gh13833.phar'); |
| 39 | +unlink(__DIR__ . '/gh13833.phar.copy.phar'); |
24 | 40 | ?>
|
| 41 | +--CREDITS-- |
| 42 | +Yuancheng Jiang <yuancheng@comp.nus.edu.sg> |
| 43 | +Felix De Vliegher <felix.devliegher@gmail.com> |
25 | 44 | --EXPECTF--
|
26 |
| -bool(true) |
27 |
| -bool(false) |
28 |
| -object(PharFileInfo)#2 (2) { |
29 |
| - ["pathName":"SplFileInfo":private]=> |
30 |
| - string(%d) "phar://%sgh13836.phar/y" |
31 |
| - ["fileName":"SplFileInfo":private]=> |
32 |
| - string(1) "y" |
33 |
| -} |
| 45 | +internal corruption of phar "%sgh13833.phar.copy.phar" (trying to read past buffer end) |
0 commit comments