From ccfaf3e4713b1878241f1235a6fcb66ad0582d47 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Wed, 7 Dec 2022 21:02:22 +0100 Subject: Add unserialize_noclass --- .../config/config_serialize_noclass.ini | 1 + .../unserialize/unserialize_noclass_forced.phpt | 21 ++++++++++++ src/tests/unserialize/unserialize_wrong_call.phpt | 2 +- .../config/config_serialize_noclass.ini | 1 + .../config/config_serialize_noclass_disabled.ini | 1 + .../unserialize_noclass_forced.phpt | 38 ++++++++++++++++++++++ .../unserialize_noclass_forced_disabled.phpt | 35 ++++++++++++++++++++ 7 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 src/tests/unserialize/config/config_serialize_noclass.ini create mode 100644 src/tests/unserialize/unserialize_noclass_forced.phpt create mode 100644 src/tests/unserialize_php8/config/config_serialize_noclass.ini create mode 100644 src/tests/unserialize_php8/config/config_serialize_noclass_disabled.ini create mode 100644 src/tests/unserialize_php8/unserialize_noclass_forced.phpt create mode 100644 src/tests/unserialize_php8/unserialize_noclass_forced_disabled.phpt (limited to 'src/tests') 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 @@ +--TEST-- +Unserialize with noclass forced +--SKIPIF-- += 80000) print "skip"; ?> +--INI-- +sp.configuration_file={PWD}/config/config_serialize_noclass.ini +--FILE-- +name = "test"; + +$a = serialize($c); +var_dump(unserialize($a, ['allowed_classes' => false])); +var_dump(unserialize($a, ['allowed_classes' => true ])); +var_dump(unserialize($a)); +?> +--EXPECTF-- +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!")); ?> --EXPECTF-- Warning: unserialize() expects at most 2 parameters, 4 given in %a/unserialize_wrong_call.php on line %d -bool(false) +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 @@ +--TEST-- +Unserialize with noclass forced +--SKIPIF-- + +--INI-- +sp.configuration_file={PWD}/config/config_serialize_noclass.ini +--FILE-- +name = "test"; + +$a = serialize($c); +var_dump(unserialize($a, ['allowed_classes' => false])); +var_dump(unserialize($a, ['allowed_classes' => true ])); +var_dump(unserialize($a)); +?> +--EXPECT-- +object(__PHP_Incomplete_Class)#2 (2) { + ["__PHP_Incomplete_Class_Name"]=> + string(1) "C" + ["name"]=> + string(4) "test" +} +object(__PHP_Incomplete_Class)#2 (2) { + ["__PHP_Incomplete_Class_Name"]=> + string(1) "C" + ["name"]=> + string(4) "test" +} +object(__PHP_Incomplete_Class)#2 (2) { + ["__PHP_Incomplete_Class_Name"]=> + string(1) "C" + ["name"]=> + string(4) "test" +} 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 @@ +--TEST-- +Unserialize with noclass forced disabled +--SKIPIF-- + +--INI-- +sp.configuration_file={PWD}/config/config_serialize_noclass_disabled.ini +--FILE-- +name = "test"; + +$a = serialize($c); +var_dump(unserialize($a, ['allowed_classes' => false])); +var_dump(unserialize($a, ['allowed_classes' => true ])); +var_dump(unserialize($a)); +?> +--EXPECT-- +object(__PHP_Incomplete_Class)#2 (2) { + ["__PHP_Incomplete_Class_Name"]=> + string(1) "C" + ["name"]=> + string(4) "test" +} +object(C)#2 (1) { + ["name"]=> + string(4) "test" +} +object(C)#2 (1) { + ["name"]=> + string(4) "test" +} + -- cgit v1.3