1--TEST-- 2broken random data test 3--SKIPIF-- 4<?php 5if(!extension_loaded('msgpack')) { 6 die("skip"); 7} 8if (version_compare(PHP_VERSION, "7.1", ">=")) { 9 die("skip PHP >= 7.1"); 10} 11?> 12--FILE-- 13<?php 14 15error_reporting(E_ERROR | E_PARSE); 16 17function test() { 18 $serialized = msgpack_serialize(null); 19 $serialized = substr($serialized, 0, -1); 20 21 $length = mt_rand(1, 255); 22 for ($i = 0; $i < $length; ++$i) { 23 $serialized .= chr(mt_rand(0, 255)); 24 } 25 26 // if returned null everything is OK 27 if (($unserialized = msgpack_unserialize($serialized)) === null) { 28 return true; 29 } 30 31 // whole data is read? 32 if ($serialized !== msgpack_serialize($unserialized)) { 33 return true; 34 } 35 36 echo bin2hex($serialized), "\n"; 37 var_dump($unserialized); 38 39 return false; 40} 41 42mt_srand(0x4c05b583); 43for ($i = 0; $i < 100; ++$i) { 44 if (!test()) break; 45} 46 47?> 48--EXPECT-- 49