summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorjvoisin2022-12-07 21:02:22 +0100
committerjvoisin2022-12-08 20:55:46 +0100
commitccfaf3e4713b1878241f1235a6fcb66ad0582d47 (patch)
tree97dcd84aed33b1d98095d0cf3f467e9dfb975f0c /src/tests
parent5966fefb9a291bd0eecd0fff9396b2b6cea4a62e (diff)
Add unserialize_noclass
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/unserialize/config/config_serialize_noclass.ini1
-rw-r--r--src/tests/unserialize/unserialize_noclass_forced.phpt21
-rw-r--r--src/tests/unserialize/unserialize_wrong_call.phpt2
-rw-r--r--src/tests/unserialize_php8/config/config_serialize_noclass.ini1
-rw-r--r--src/tests/unserialize_php8/config/config_serialize_noclass_disabled.ini1
-rw-r--r--src/tests/unserialize_php8/unserialize_noclass_forced.phpt38
-rw-r--r--src/tests/unserialize_php8/unserialize_noclass_forced_disabled.phpt35
7 files changed, 98 insertions, 1 deletions
diff --git a/src/tests/unserialize/config/config_serialize_noclass.ini b/src/tests/unserialize/config/config_serialize_noclass.ini
new file mode 100644
index 0000000..b84de51
--- /dev/null
+++ b/src/tests/unserialize/config/config_serialize_noclass.ini
@@ -0,0 +1 @@
sp.unserialize_noclass.enable();
diff --git a/src/tests/unserialize/unserialize_noclass_forced.phpt b/src/tests/unserialize/unserialize_noclass_forced.phpt
new file mode 100644
index 0000000..3b1e8d3
--- /dev/null
+++ b/src/tests/unserialize/unserialize_noclass_forced.phpt
@@ -0,0 +1,21 @@
1--TEST--
2Unserialize with noclass forced
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus") || PHP_VERSION_ID >= 80000) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/config_serialize_noclass.ini
7--FILE--
8<?php
9class C {
10 public $name;
11}
12$c = new C;
13$c->name = "test";
14
15$a = serialize($c);
16var_dump(unserialize($a, ['allowed_classes' => false]));
17var_dump(unserialize($a, ['allowed_classes' => true ]));
18var_dump(unserialize($a));
19?>
20--EXPECTF--
21Fatal error: [snuffleupagus][0.0.0.0][unserialize_noclass][drop] unserialize_noclass is only supported on PHP8+ in %s/tests/unserialize/unserialize_noclass_forced.php on line 9
diff --git a/src/tests/unserialize/unserialize_wrong_call.phpt b/src/tests/unserialize/unserialize_wrong_call.phpt
index a6fe140..afa42f6 100644
--- a/src/tests/unserialize/unserialize_wrong_call.phpt
+++ b/src/tests/unserialize/unserialize_wrong_call.phpt
@@ -12,4 +12,4 @@ var_dump(unserialize($a, "too", "many", "aaaaaaaarguments!"));
12?> 12?>
13--EXPECTF-- 13--EXPECTF--
14Warning: unserialize() expects at most 2 parameters, 4 given in %a/unserialize_wrong_call.php on line %d 14Warning: unserialize() expects at most 2 parameters, 4 given in %a/unserialize_wrong_call.php on line %d
15bool(false) 15NULL
diff --git a/src/tests/unserialize_php8/config/config_serialize_noclass.ini b/src/tests/unserialize_php8/config/config_serialize_noclass.ini
new file mode 100644
index 0000000..b84de51
--- /dev/null
+++ b/src/tests/unserialize_php8/config/config_serialize_noclass.ini
@@ -0,0 +1 @@
sp.unserialize_noclass.enable();
diff --git a/src/tests/unserialize_php8/config/config_serialize_noclass_disabled.ini b/src/tests/unserialize_php8/config/config_serialize_noclass_disabled.ini
new file mode 100644
index 0000000..0238772
--- /dev/null
+++ b/src/tests/unserialize_php8/config/config_serialize_noclass_disabled.ini
@@ -0,0 +1 @@
sp.unserialize_noclass.disable();
diff --git a/src/tests/unserialize_php8/unserialize_noclass_forced.phpt b/src/tests/unserialize_php8/unserialize_noclass_forced.phpt
new file mode 100644
index 0000000..9f276c5
--- /dev/null
+++ b/src/tests/unserialize_php8/unserialize_noclass_forced.phpt
@@ -0,0 +1,38 @@
1--TEST--
2Unserialize with noclass forced
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/config_serialize_noclass.ini
7--FILE--
8<?php
9class C {
10 public $name;
11}
12$c = new C;
13$c->name = "test";
14
15$a = serialize($c);
16var_dump(unserialize($a, ['allowed_classes' => false]));
17var_dump(unserialize($a, ['allowed_classes' => true ]));
18var_dump(unserialize($a));
19?>
20--EXPECT--
21object(__PHP_Incomplete_Class)#2 (2) {
22 ["__PHP_Incomplete_Class_Name"]=>
23 string(1) "C"
24 ["name"]=>
25 string(4) "test"
26}
27object(__PHP_Incomplete_Class)#2 (2) {
28 ["__PHP_Incomplete_Class_Name"]=>
29 string(1) "C"
30 ["name"]=>
31 string(4) "test"
32}
33object(__PHP_Incomplete_Class)#2 (2) {
34 ["__PHP_Incomplete_Class_Name"]=>
35 string(1) "C"
36 ["name"]=>
37 string(4) "test"
38}
diff --git a/src/tests/unserialize_php8/unserialize_noclass_forced_disabled.phpt b/src/tests/unserialize_php8/unserialize_noclass_forced_disabled.phpt
new file mode 100644
index 0000000..2c4223a
--- /dev/null
+++ b/src/tests/unserialize_php8/unserialize_noclass_forced_disabled.phpt
@@ -0,0 +1,35 @@
1--TEST--
2Unserialize with noclass forced disabled
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/config_serialize_noclass_disabled.ini
7--FILE--
8<?php
9class C {
10 public $name;
11}
12$c = new C;
13$c->name = "test";
14
15$a = serialize($c);
16var_dump(unserialize($a, ['allowed_classes' => false]));
17var_dump(unserialize($a, ['allowed_classes' => true ]));
18var_dump(unserialize($a));
19?>
20--EXPECT--
21object(__PHP_Incomplete_Class)#2 (2) {
22 ["__PHP_Incomplete_Class_Name"]=>
23 string(1) "C"
24 ["name"]=>
25 string(4) "test"
26}
27object(C)#2 (1) {
28 ["name"]=>
29 string(4) "test"
30}
31object(C)#2 (1) {
32 ["name"]=>
33 string(4) "test"
34}
35