diff options
| author | Julien Voisin | 2022-12-08 20:59:29 +0100 |
|---|---|---|
| committer | GitHub | 2022-12-08 20:59:29 +0100 |
| commit | 93c2c5632e27549d95fb7d9493769f013e49a749 (patch) | |
| tree | 97dcd84aed33b1d98095d0cf3f467e9dfb975f0c /src/tests | |
| parent | 3134f49d4de12d1e2507272e0e5022bdf5d60093 (diff) | |
| parent | ccfaf3e4713b1878241f1235a6fcb66ad0582d47 (diff) | |
Add an `unserialize_noclass` option
Diffstat (limited to 'src/tests')
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-- | ||
| 2 | Unserialize with noclass forced | ||
| 3 | --SKIPIF-- | ||
| 4 | <?php if (!extension_loaded("snuffleupagus") || PHP_VERSION_ID >= 80000) print "skip"; ?> | ||
| 5 | --INI-- | ||
| 6 | sp.configuration_file={PWD}/config/config_serialize_noclass.ini | ||
| 7 | --FILE-- | ||
| 8 | <?php | ||
| 9 | class C { | ||
| 10 | public $name; | ||
| 11 | } | ||
| 12 | $c = new C; | ||
| 13 | $c->name = "test"; | ||
| 14 | |||
| 15 | $a = serialize($c); | ||
| 16 | var_dump(unserialize($a, ['allowed_classes' => false])); | ||
| 17 | var_dump(unserialize($a, ['allowed_classes' => true ])); | ||
| 18 | var_dump(unserialize($a)); | ||
| 19 | ?> | ||
| 20 | --EXPECTF-- | ||
| 21 | Fatal 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-- |
| 14 | Warning: unserialize() expects at most 2 parameters, 4 given in %a/unserialize_wrong_call.php on line %d | 14 | Warning: unserialize() expects at most 2 parameters, 4 given in %a/unserialize_wrong_call.php on line %d |
| 15 | bool(false) | 15 | NULL |
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-- | ||
| 2 | Unserialize with noclass forced | ||
| 3 | --SKIPIF-- | ||
| 4 | <?php if (!extension_loaded("snuffleupagus")) print "skip"; ?> | ||
| 5 | --INI-- | ||
| 6 | sp.configuration_file={PWD}/config/config_serialize_noclass.ini | ||
| 7 | --FILE-- | ||
| 8 | <?php | ||
| 9 | class C { | ||
| 10 | public $name; | ||
| 11 | } | ||
| 12 | $c = new C; | ||
| 13 | $c->name = "test"; | ||
| 14 | |||
| 15 | $a = serialize($c); | ||
| 16 | var_dump(unserialize($a, ['allowed_classes' => false])); | ||
| 17 | var_dump(unserialize($a, ['allowed_classes' => true ])); | ||
| 18 | var_dump(unserialize($a)); | ||
| 19 | ?> | ||
| 20 | --EXPECT-- | ||
| 21 | object(__PHP_Incomplete_Class)#2 (2) { | ||
| 22 | ["__PHP_Incomplete_Class_Name"]=> | ||
| 23 | string(1) "C" | ||
| 24 | ["name"]=> | ||
| 25 | string(4) "test" | ||
| 26 | } | ||
| 27 | object(__PHP_Incomplete_Class)#2 (2) { | ||
| 28 | ["__PHP_Incomplete_Class_Name"]=> | ||
| 29 | string(1) "C" | ||
| 30 | ["name"]=> | ||
| 31 | string(4) "test" | ||
| 32 | } | ||
| 33 | object(__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-- | ||
| 2 | Unserialize with noclass forced disabled | ||
| 3 | --SKIPIF-- | ||
| 4 | <?php if (!extension_loaded("snuffleupagus")) print "skip"; ?> | ||
| 5 | --INI-- | ||
| 6 | sp.configuration_file={PWD}/config/config_serialize_noclass_disabled.ini | ||
| 7 | --FILE-- | ||
| 8 | <?php | ||
| 9 | class C { | ||
| 10 | public $name; | ||
| 11 | } | ||
| 12 | $c = new C; | ||
| 13 | $c->name = "test"; | ||
| 14 | |||
| 15 | $a = serialize($c); | ||
| 16 | var_dump(unserialize($a, ['allowed_classes' => false])); | ||
| 17 | var_dump(unserialize($a, ['allowed_classes' => true ])); | ||
| 18 | var_dump(unserialize($a)); | ||
| 19 | ?> | ||
| 20 | --EXPECT-- | ||
| 21 | object(__PHP_Incomplete_Class)#2 (2) { | ||
| 22 | ["__PHP_Incomplete_Class_Name"]=> | ||
| 23 | string(1) "C" | ||
| 24 | ["name"]=> | ||
| 25 | string(4) "test" | ||
| 26 | } | ||
| 27 | object(C)#2 (1) { | ||
| 28 | ["name"]=> | ||
| 29 | string(4) "test" | ||
| 30 | } | ||
| 31 | object(C)#2 (1) { | ||
| 32 | ["name"]=> | ||
| 33 | string(4) "test" | ||
| 34 | } | ||
| 35 | |||
