phar_offset_check.phpt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. --TEST--
  2. Phar: disallow stub and alias setting via offset*() methods
  3. --SKIPIF--
  4. <?php if (!extension_loaded("phar")) die("skip"); ?>
  5. <?php if (!extension_loaded("spl")) die("skip SPL not available"); ?>
  6. --INI--
  7. phar.readonly=0
  8. phar.require_hash=1
  9. --FILE--
  10. <?php
  11. $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
  12. $pname = 'phar://'.$fname;
  13. $phar = new Phar($fname);
  14. $phar->setDefaultStub();
  15. $phar->setAlias('susan');
  16. $phar['a.txt'] = "first file\n";
  17. $phar['b.txt'] = "second file\n";
  18. try {
  19. $phar->offsetGet('.phar/stub.php');
  20. } catch (Exception $e) {
  21. echo $e->getMessage()."\n";
  22. }
  23. try {
  24. $phar->offsetGet('.phar/alias.txt');
  25. } catch (Exception $e) {
  26. echo $e->getMessage()."\n";
  27. }
  28. try {
  29. $phar->offsetSet('.phar/stub.php', '<?php __HALT_COMPILER(); ?>');
  30. } catch (Exception $e) {
  31. echo $e->getMessage()."\n";
  32. }
  33. var_dump(strlen($phar->getStub()));
  34. try {
  35. $phar->offsetUnset('.phar/stub.php');
  36. } catch (Exception $e) {
  37. echo $e->getMessage()."\n";
  38. }
  39. var_dump(strlen($phar->getStub()));
  40. try {
  41. $phar->offsetSet('.phar/alias.txt', 'dolly');
  42. } catch (Exception $e) {
  43. echo $e->getMessage()."\n";
  44. }
  45. var_dump($phar->getAlias());
  46. try {
  47. $phar->offsetUnset('.phar/alias.txt');
  48. } catch (Exception $e) {
  49. echo $e->getMessage()."\n";
  50. }
  51. var_dump($phar->getAlias());
  52. ?>
  53. ===DONE===
  54. --CLEAN--
  55. <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
  56. --EXPECTF--
  57. Entry .phar/stub.php does not exist
  58. Entry .phar/alias.txt does not exist
  59. Cannot set stub ".phar/stub.php" directly in phar "%sphar_offset_check.phar.php", use setStub
  60. int(6675)
  61. int(6675)
  62. Cannot set alias ".phar/alias.txt" directly in phar "%sphar_offset_check.phar.php", use setAlias
  63. string(5) "susan"
  64. string(5) "susan"
  65. ===DONE===