From 93183728d227cf069cf9c2a954f60c4cc980fd7b Mon Sep 17 00:00:00 2001 From: Steph Fox Date: Thu, 15 May 2008 12:37:45 +0000 Subject: [PATCH] - Fix test, add a couple of new ones @Greg: it seems we covered it already ;) --- ext/phar/tests/phar_extract2.phpt | 80 ++++++++++++++++++++++ ext/phar/tests/phar_offset_check.phpt | 76 ++++++++++++++++++++ ext/phar/tests/tar/phar_convert_phar3.phpt | 6 +- 3 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 ext/phar/tests/phar_extract2.phpt create mode 100644 ext/phar/tests/phar_offset_check.phpt diff --git a/ext/phar/tests/phar_extract2.phpt b/ext/phar/tests/phar_extract2.phpt new file mode 100644 index 0000000000..bb7f5bc277 --- /dev/null +++ b/ext/phar/tests/phar_extract2.phpt @@ -0,0 +1,80 @@ +--TEST-- +Phar: Phar::extractTo() - .phar safety +--SKIPIF-- + +--INI-- +phar.readonly=0 +--FILE-- +setDefaultStub(); +$phar->setAlias('fred'); +$phar['file1.txt'] = 'hi'; +$phar['file2.txt'] = 'hi2'; +$phar['subdir/ectory/file.txt'] = 'hi3'; +$phar->mount($pname . '/mount', __FILE__); +$phar->addEmptyDir('one/level'); + +$phar->extractTo(dirname(__FILE__) . '/extract', 'mount'); +$phar->extractTo(dirname(__FILE__) . '/extract'); +$out = array(); + +foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(dirname(__FILE__) . '/extract'), RecursiveIteratorIterator::CHILD_FIRST) as $path => $file) { + $extracted[] = $path; +} + +sort($extracted); + +foreach ($extracted as $out) { + echo "$out\n"; +} + +$variations = array('phar', '.phar', '/phar', '/.phar', '.phar/stub.php', '.phar/alias.txt', '/stub.php', '/alias.txt', 'stub.php', 'alias.txt'); + +foreach ($variations as $var) { + try { + $phar->extractTo(dirname(__FILE__) . '/extract1', $var); + } catch (Exception $e) { + echo $e->getMessage()."\n"; + } +} + +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +%sextract%cfile1.txt +%sextract\file2.txt +%sextract\one +%sextract\subdir +%sextract\subdir\ectory +%sextract\subdir\ectory\file.txt +Phar Error: attempted to extract non-existent file "phar" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file ".phar" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file "/phar" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file "/.phar" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file ".phar/stub.php" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file ".phar/alias.txt" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file "/stub.php" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file "/alias.txt" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file "stub.php" from phar "%stempmanifest2.phar.php" +Phar Error: attempted to extract non-existent file "alias.txt" from phar "%stempmanifest2.phar.php" +===DONE=== diff --git a/ext/phar/tests/phar_offset_check.phpt b/ext/phar/tests/phar_offset_check.phpt new file mode 100644 index 0000000000..279b359f4e --- /dev/null +++ b/ext/phar/tests/phar_offset_check.phpt @@ -0,0 +1,76 @@ +--TEST-- +Phar: disallow stub and alias setting via offset*() methods +--SKIPIF-- + + +--INI-- +phar.readonly=0 +phar.require_hash=1 +--FILE-- +setDefaultStub(); +$phar->setAlias('susan'); +$phar['a.txt'] = "first file\n"; +$phar['b.txt'] = "second file\n"; + +try { + $phar->offsetGet('.phar/stub.php'); +} catch (Exception $e) { + echo $e->getMessage()."\n"; +} + +try { + $phar->offsetGet('.phar/alias.txt'); +} catch (Exception $e) { + echo $e->getMessage()."\n"; +} + +try { + $phar->offsetSet('.phar/stub.php', ''); +} catch (Exception $e) { + echo $e->getMessage()."\n"; +} + +var_dump(strlen($phar->getStub())); + +try { + $phar->offsetUnset('.phar/stub.php'); +} catch (Exception $e) { + echo $e->getMessage()."\n"; +} + +var_dump(strlen($phar->getStub())); + +try { + $phar->offsetSet('.phar/alias.txt', 'dolly'); +} catch (Exception $e) { + echo $e->getMessage()."\n"; +} + +var_dump($phar->getAlias()); + +try { + $phar->offsetUnset('.phar/alias.txt'); +} catch (Exception $e) { + echo $e->getMessage()."\n"; +} + +var_dump($phar->getAlias()); + +?> +===DONE=== +--CLEAN-- + +--EXPECT-- +Entry .phar/stub.php does not exist +Entry .phar/alias.txt does not exist +int(6661) +int(6661) +string(5) "susan" +string(5) "susan" +===DONE=== diff --git a/ext/phar/tests/tar/phar_convert_phar3.phpt b/ext/phar/tests/tar/phar_convert_phar3.phpt index f4768194d1..a90a497ee7 100644 --- a/ext/phar/tests/tar/phar_convert_phar3.phpt +++ b/ext/phar/tests/tar/phar_convert_phar3.phpt @@ -49,14 +49,14 @@ __HALT_COMPILER(); ?> --EXPECT-- bool(false) -int(6651) +int(6659) bool(true) string(60) "