unserialize_errors.phpt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. --TEST--
  2. Errors from __unserialize() with invalid data
  3. --FILE--
  4. <?php
  5. echo "ArrayObject:\n";
  6. try {
  7. // empty array
  8. unserialize('O:11:"ArrayObject":0:{}');
  9. } catch (Exception $e) {
  10. echo $e->getMessage(), "\n";
  11. }
  12. try {
  13. unserialize('O:11:"ArrayObject":3:{i:0;b:1;i:1;a:0:{}i:2;a:0:{}}');
  14. } catch (Exception $e) {
  15. echo $e->getMessage(), "\n";
  16. }
  17. try {
  18. unserialize('O:11:"ArrayObject":3:{i:0;i:0;i:1;a:0:{}i:2;i:0;}');
  19. } catch (Exception $e) {
  20. echo $e->getMessage(), "\n";
  21. }
  22. try {
  23. unserialize('O:11:"ArrayObject":3:{i:0;i:0;i:1;i:0;i:2;a:0:{}}');
  24. } catch (Exception $e) {
  25. echo $e->getMessage(), "\n";
  26. }
  27. try {
  28. // iterator class name is not a string
  29. unserialize('O:11:"ArrayObject":4:{i:0;i:0;i:1;i:0;i:2;a:0:{}i:3;i:0;}');
  30. } catch (Exception $e) {
  31. echo $e->getMessage(), "\n";
  32. }
  33. try {
  34. unserialize('O:11:"ArrayObject":4:{i:0;i:0;i:1;a:2:{i:0;i:1;i:1;i:2;}i:2;a:0:{}i:3;s:11:"NonExistent";}');
  35. } catch (Exception $e) {
  36. echo $e->getMessage(), "\n";
  37. }
  38. class Existent {}
  39. try {
  40. unserialize('O:11:"ArrayObject":4:{i:0;i:0;i:1;a:2:{i:0;i:1;i:1;i:2;}i:2;a:0:{}i:3;s:8:"Existent";}');
  41. } catch (Exception $e) {
  42. echo $e->getMessage(), "\n";
  43. }
  44. echo "ArrayIterator:\n";
  45. try {
  46. unserialize('O:13:"ArrayIterator":0:{}');
  47. } catch (Exception $e) {
  48. echo $e->getMessage(), "\n";
  49. }
  50. try {
  51. unserialize('O:13:"ArrayIterator":3:{i:0;b:1;i:1;a:0:{}i:2;a:0:{}}');
  52. } catch (Exception $e) {
  53. echo $e->getMessage(), "\n";
  54. }
  55. try {
  56. unserialize('O:13:"ArrayIterator":3:{i:0;i:0;i:1;a:0:{}i:2;i:0;}');
  57. } catch (Exception $e) {
  58. echo $e->getMessage(), "\n";
  59. }
  60. try {
  61. unserialize('O:13:"ArrayIterator":3:{i:0;i:0;i:1;i:0;i:2;a:0:{}}');
  62. } catch (Exception $e) {
  63. echo $e->getMessage(), "\n";
  64. }
  65. echo "SplDoublyLinkedList:\n";
  66. try {
  67. unserialize('O:19:"SplDoublyLinkedList":0:{}');
  68. } catch (Exception $e) {
  69. echo $e->getMessage(), "\n";
  70. }
  71. try {
  72. unserialize('O:19:"SplDoublyLinkedList":3:{i:0;b:1;i:1;a:0:{}i:2;a:0:{}}');
  73. } catch (Exception $e) {
  74. echo $e->getMessage(), "\n";
  75. }
  76. try {
  77. unserialize('O:19:"SplDoublyLinkedList":3:{i:0;i:0;i:1;a:0:{}i:2;i:0;}');
  78. } catch (Exception $e) {
  79. echo $e->getMessage(), "\n";
  80. }
  81. try {
  82. unserialize('O:19:"SplDoublyLinkedList":3:{i:0;i:0;i:1;i:0;i:2;a:0:{}}');
  83. } catch (Exception $e) {
  84. echo $e->getMessage(), "\n";
  85. }
  86. echo "SplObjectStorage:\n";
  87. try {
  88. unserialize('O:16:"SplObjectStorage":0:{}');
  89. } catch (Exception $e) {
  90. echo $e->getMessage(), "\n";
  91. }
  92. try {
  93. unserialize('O:16:"SplObjectStorage":2:{i:0;i:0;i:1;a:0:{}}');
  94. } catch (Exception $e) {
  95. echo $e->getMessage(), "\n";
  96. }
  97. try {
  98. unserialize('O:16:"SplObjectStorage":2:{i:0;a:0:{}i:1;i:1;}');
  99. } catch (Exception $e) {
  100. echo $e->getMessage(), "\n";
  101. }
  102. try {
  103. unserialize('O:16:"SplObjectStorage":2:{i:0;a:1:{i:0;i:0;}i:1;a:0:{}}');
  104. } catch (Exception $e) {
  105. echo $e->getMessage(), "\n";
  106. }
  107. try {
  108. unserialize('O:16:"SplObjectStorage":2:{i:0;a:2:{i:0;i:0;i:1;i:0;}i:1;a:0:{}}');
  109. } catch (Exception $e) {
  110. echo $e->getMessage(), "\n";
  111. }
  112. ?>
  113. --EXPECT--
  114. ArrayObject:
  115. Incomplete or ill-typed serialization data
  116. Incomplete or ill-typed serialization data
  117. Incomplete or ill-typed serialization data
  118. Passed variable is not an array or object
  119. Incomplete or ill-typed serialization data
  120. Cannot deserialize ArrayObject with iterator class 'NonExistent'; no such class exists
  121. Cannot deserialize ArrayObject with iterator class 'Existent'; this class does not implement the Iterator interface
  122. ArrayIterator:
  123. Incomplete or ill-typed serialization data
  124. Incomplete or ill-typed serialization data
  125. Incomplete or ill-typed serialization data
  126. Passed variable is not an array or object
  127. SplDoublyLinkedList:
  128. Incomplete or ill-typed serialization data
  129. Incomplete or ill-typed serialization data
  130. Incomplete or ill-typed serialization data
  131. Incomplete or ill-typed serialization data
  132. SplObjectStorage:
  133. Incomplete or ill-typed serialization data
  134. Incomplete or ill-typed serialization data
  135. Incomplete or ill-typed serialization data
  136. Odd number of elements
  137. Non-object key