summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2004-09-26 18:28:07 +0000
committerMarcus Boerger <helly@php.net>2004-09-26 18:28:07 +0000
commit3cdd2bcb010a01ffc7034341f90d0de4170b9e52 (patch)
tree4ec6488a4d7ee3e3bb4fd4c5acd979478067bf65 /ext
parent617de199125d605f41ea9c7e182740ba40557c63 (diff)
downloadphp-git-3cdd2bcb010a01ffc7034341f90d0de4170b9e52.tar.gz
- Add more tests
Diffstat (limited to 'ext')
-rw-r--r--ext/standard/tests/serialize/002.phpt44
-rwxr-xr-xext/standard/tests/serialize/autoload_implements.p5c10
-rwxr-xr-xext/standard/tests/serialize/autoload_interface.p5c7
-rwxr-xr-xext/standard/tests/serialize/bug30234.phpt40
4 files changed, 101 insertions, 0 deletions
diff --git a/ext/standard/tests/serialize/002.phpt b/ext/standard/tests/serialize/002.phpt
new file mode 100644
index 0000000000..3085d1cf4f
--- /dev/null
+++ b/ext/standard/tests/serialize/002.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Bug #25378 (unserialize() crashes with invalid data)
+--FILE--
+<?php
+var_dump(unserialize('b:0;'));
+var_dump(unserialize('b:1;'));
+var_dump(unserialize('i:823;'));
+var_dump(unserialize('s:0:"";'));
+var_dump(unserialize('s:3:"foo";'));
+var_dump(unserialize('a:1:{i:0;s:2:"12";}'));
+var_dump(unserialize('a:2:{i:0;a:0:{}i:1;a:0:{}}'));
+var_dump(unserialize('a:3:{i:0;s:3:"foo";i:1;s:3:"bar";i:2;s:3:"baz";}'));
+var_dump(unserialize('O:8:"stdClass":0:{}'));
+?>
+===DONE===
+--EXPECTF--
+bool(false)
+bool(true)
+int(823)
+string(0) ""
+string(3) "foo"
+array(1) {
+ [0]=>
+ string(2) "12"
+}
+array(2) {
+ [0]=>
+ array(0) {
+ }
+ [1]=>
+ array(0) {
+ }
+}
+array(3) {
+ [0]=>
+ string(3) "foo"
+ [1]=>
+ string(3) "bar"
+ [2]=>
+ string(3) "baz"
+}
+object(stdClass)#%d (0) {
+}
+===DONE===
diff --git a/ext/standard/tests/serialize/autoload_implements.p5c b/ext/standard/tests/serialize/autoload_implements.p5c
new file mode 100755
index 0000000000..2c3479c860
--- /dev/null
+++ b/ext/standard/tests/serialize/autoload_implements.p5c
@@ -0,0 +1,10 @@
+<?php
+
+class autoload_implements implements autoload_interface {
+ function testFunction()
+ {
+ return true;
+ }
+}
+
+?> \ No newline at end of file
diff --git a/ext/standard/tests/serialize/autoload_interface.p5c b/ext/standard/tests/serialize/autoload_interface.p5c
new file mode 100755
index 0000000000..6908155e61
--- /dev/null
+++ b/ext/standard/tests/serialize/autoload_interface.p5c
@@ -0,0 +1,7 @@
+<?php
+
+interface autoload_interface {
+ function testFunction();
+}
+
+?> \ No newline at end of file
diff --git a/ext/standard/tests/serialize/bug30234.phpt b/ext/standard/tests/serialize/bug30234.phpt
new file mode 100755
index 0000000000..37fc8cde3c
--- /dev/null
+++ b/ext/standard/tests/serialize/bug30234.phpt
@@ -0,0 +1,40 @@
+--TEST--
+#30234 (__autoload() not invoked for interfaces)
+--SKIPIF--
+<?php
+ if (class_exists('autoload_root', false)) die('skip Autoload test classes exist already');
+?>
+--FILE--
+<?php
+
+function __autoload($class_name)
+{
+ require_once(dirname(__FILE__) . '/' . strtolower($class_name) . '.p5c');
+ echo __FUNCTION__ . '(' . $class_name . ")\n";
+}
+
+var_dump(interface_exists('autoload_interface', false));
+var_dump(class_exists('autoload_implements', false));
+
+$o = unserialize('O:19:"Autoload_Implements":0:{}');
+
+var_dump($o);
+var_dump($o instanceof autoload_interface);
+unset($o);
+
+var_dump(interface_exists('autoload_interface', false));
+var_dump(class_exists('autoload_implements', false));
+
+?>
+===DONE===
+--EXPECTF--
+bool(false)
+bool(false)
+__autoload(autoload_interface)
+__autoload(Autoload_Implements)
+object(autoload_implements)#%d (0) {
+}
+bool(true)
+bool(true)
+bool(true)
+===DONE===