com php-src: Add some tests for unserialize() class filtering: ext/standard/tests/serialize/unserialize_error_001. phpt
ext/standard/tests/serialize/unserialize_subclasses. phpt

From: Date: Tue, 06 Oct 2015 19:04:11 +0000
Subject: com php-src: Add some tests for unserialize() class filtering: ext/standard/tests/serialize/unserialize_error_001. phpt
ext/standard/tests/serialize/unserialize_subclasses. phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-89305@lists.php.net to get a copy of this message
Commit: a2082b7c978bdafc5df2995c53ca00881377d4f0 Author: Sara Golemon <sgolemon@fb.com> Tue, 6 Oct 2015 11:59:43 -0700 Parents: fb2c890c2c270f40c886b0123586e4cd10153251 Branches: PHP-7.0 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a2082b7c978bdafc5df2995c53ca00881377d4f0 Log: Add some tests for unserialize() class filtering Changed paths: A ext/standard/tests/serialize/unserialize_error_001.phpt A ext/standard/tests/serialize/unserialize_subclasses..phpt Diff: diff --git a/ext/standard/tests/serialize/unserialize_error_001.phpt b/ext/standard/tests/serialize/unserialize_error_001.phpt new file mode 100644 index 0000000..5589cbd --- /dev/null +++ b/ext/standard/tests/serialize/unserialize_error_001.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test unserialize() with non-bool/array allowed_classes +--FILE-- +<?php +class foo { + public $x = "bar"; +} +$z = array(new foo(), 2, "3"); +$s = serialize($z); + +var_dump(unserialize($s, ["allowed_classes" => null])); +var_dump(unserialize($s, ["allowed_classes" => 0])); +var_dump(unserialize($s, ["allowed_classes" => 1])); + +--EXPECTF-- +array(3) { + [0]=> + object(__PHP_Incomplete_Class)#%d (2) { + ["__PHP_Incomplete_Class_Name"]=> + string(3) "foo" + ["x"]=> + string(3) "bar" + } + [1]=> + int(2) + [2]=> + string(1) "3" +} +array(3) { + [0]=> + object(__PHP_Incomplete_Class)#%d (2) { + ["__PHP_Incomplete_Class_Name"]=> + string(3) "foo" + ["x"]=> + string(3) "bar" + } + [1]=> + int(2) + [2]=> + string(1) "3" +} +array(3) { + [0]=> + object(foo)#%d (1) { + ["x"]=> + string(3) "bar" + } + [1]=> + int(2) + [2]=> + string(1) "3" +} diff --git a/ext/standard/tests/serialize/unserialize_subclasses..phpt b/ext/standard/tests/serialize/unserialize_subclasses.phpt new file mode 100644 index 0000000..1f2384f --- /dev/null +++ b/ext/standard/tests/serialize/unserialize_subclasses.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test unserialize() with allowed_classes and subclasses +--FILE-- +<?php + +class C {} +class D extends C {} + +$c = serialize(new C); +$d = serialize(new D); + +var_dump(unserialize($c, ["allowed_classes" => ["C"]])); +var_dump(unserialize($c, ["allowed_classes" => ["D"]])); +var_dump(unserialize($d, ["allowed_classes" => ["C"]])); +var_dump(unserialize($d, ["allowed_classes" => ["D"]])); + +--EXPECTF-- +object(C)#%d (0) { +} +object(__PHP_Incomplete_Class)#%d (1) { + ["__PHP_Incomplete_Class_Name"]=> + string(1) "C" +} +object(__PHP_Incomplete_Class)#%d (1) { + ["__PHP_Incomplete_Class_Name"]=> + string(1) "D" +} +object(D)#%d (0) { +}

« previous php.cvs (#89305) next »