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