summaryrefslogtreecommitdiff
path: root/ext/hash/tests/xxhash_unserialize_memsize.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/hash/tests/xxhash_unserialize_memsize.phpt')
-rw-r--r--ext/hash/tests/xxhash_unserialize_memsize.phpt27
1 files changed, 27 insertions, 0 deletions
diff --git a/ext/hash/tests/xxhash_unserialize_memsize.phpt b/ext/hash/tests/xxhash_unserialize_memsize.phpt
new file mode 100644
index 0000000000..6de78ee071
--- /dev/null
+++ b/ext/hash/tests/xxhash_unserialize_memsize.phpt
@@ -0,0 +1,27 @@
+--TEST--
+xxhash memsize must be in range when unserializing
+--FILE--
+<?php
+try {
+ $str = <<<'STR'
+ O:11:"HashContext":5:{i:0;s:5:"xxh32";i:1;i:0;i:2;a:12:{i:0;i:0;i:1;i:0;i:2;i:606290984;i:3;i:-2048144777;i:4;i:0;i:5;i:1640531535;i:6;i:0;i:7;i:0;i:8;i:0;i:9;i:0;i:10;i:30;i:11;i:0;}i:3;i:2;i:4;a:0:{}}
+ STR;
+ $hash = unserialize($str);
+ hash_update($hash, '');
+} catch (Exception $e) {
+ echo $e->getMessage(), "\n";
+}
+
+try {
+ $str = <<<'STR'
+ O:11:"HashContext":5:{i:0;s:5:"xxh64";i:1;i:0;i:2;a:22:{i:0;i:0;i:1;i:0;i:2;i:6;i:3;i:2;i:4;i:8;i:5;i:9;i:6;i:0;i:7;i:0;i:8;i:1;i:9;i:5;i:10;i:0;i:11;i:0;i:12;i:0;i:13;i:0;i:14;i:0;i:15;i:0;i:16;i:0;i:17;i:0;i:18;i:70;i:19;i:0;i:20;i:0;i:21;i:0;}i:3;i:2;i:4;a:0:{}}
+ STR;
+ $hash = unserialize($str);
+ hash_update($hash, '');
+} catch (Exception $e) {
+ echo $e->getMessage(), "\n";
+}
+?>
+--EXPECT--
+Incomplete or ill-formed serialization data ("xxh32" code -2000)
+Incomplete or ill-formed serialization data ("xxh64" code -2000)