phar_offset_check.phpt 1.6 KB

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