1--TEST-- 2Phar: ignore filenames starting with / on offsetSet 3--SKIPIF-- 4<?php if (!extension_loaded("phar")) die("skip"); ?> 5--INI-- 6phar.readonly=0 7phar.require_hash=1 8--FILE-- 9<?php 10 11$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php'; 12$pname = 'phar://'.$fname; 13$iname = '/file.txt'; 14$ename = '/error/..'; 15 16$p = new Phar($fname); 17$p[$iname] = "foobar\n"; 18 19try 20{ 21 $p[$ename] = "foobar\n"; 22} 23catch(Exception $e) 24{ 25 echo $e->getMessage() . "\n"; 26} 27 28include($pname . $iname); 29 30// extra coverage 31try { 32$p['.phar/oops'] = 'hi'; 33} catch (Exception $e) { 34echo $e->getMessage(),"\n"; 35} 36try { 37$a = $p['.phar/stub.php']; 38} catch (Exception $e) { 39echo $e->getMessage(),"\n"; 40} 41?> 42--CLEAN-- 43<?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?> 44--EXPECT-- 45Entry /error/.. does not exist and cannot be created: phar error: invalid path "/error/.." contains upper directory reference 46foobar 47Cannot set any files or directories in magic ".phar" directory 48Entry .phar/stub.php does not exist 49