1--TEST-- 2broken random data test : MessagePack class 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 $msgpack = new MessagePack(); 28 if (($unserialized = $msgpack->unpack($serialized)) === null) { 29 return true; 30 } 31 32 // whole data is read? 33 if ($serialized !== msgpack_serialize($unserialized)) { 34 return true; 35 } 36 37 echo bin2hex($serialized), "\n"; 38 var_dump($unserialized); 39 40 return false; 41} 42 43mt_srand(0x4c05b583); 44for ($i = 0; $i < 100; ++$i) { 45 if (!test()) break; 46} 47 48?> 49--EXPECT-- 50