Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
opt
/
php-8.2.24-202410171016
/
share
/
test
/
mongodb
/
tests
/
bson
/
//opt/php-8.2.24-202410171016/share/test/mongodb/tests/bson/bson-fromPHP_error-007.phpt
--TEST-- MongoDB\BSON\fromPHP(): Serializable returns document with null bytes in field name --FILE-- <?php require_once __DIR__ . '/../utils/basic.inc'; class MySerializable implements MongoDB\BSON\Serializable { private $data; public function __construct($data) { $this->data = $data; } #[\ReturnTypeWillChange] public function bsonSerialize() { return $this->data; } } echo "\nTesting array with one leading null byte in field name\n"; echo throws(function() { MongoDB\BSON\fromPHP(new MySerializable(["\0" => 1])); }, 'MongoDB\Driver\Exception\UnexpectedValueException'), "\n"; echo "\nTesting array with one trailing null byte in field name\n"; echo throws(function() { MongoDB\BSON\fromPHP(new MySerializable(["a\0" => 1])); }, 'MongoDB\Driver\Exception\UnexpectedValueException'), "\n"; echo "\nTesting array with multiple null bytes in field name\n"; echo throws(function() { MongoDB\BSON\fromPHP(new MySerializable(["\0\0\0" => 1])); }, 'MongoDB\Driver\Exception\UnexpectedValueException'), "\n"; /* Per PHPC-884, field names with a leading null byte are ignored when encoding * a document from an object's property hash table, since PHP uses leading bytes * to denote protected and private properties. However, in this case the object * was returned from Serializable::bsonSerialize() and we skip the check for * protected and private properties. */ echo "\nTesting object with one leading null byte in field name\n"; echo throws(function() { MongoDB\BSON\fromPHP(new MySerializable((object) ["\0" => 1])); }, 'MongoDB\Driver\Exception\UnexpectedValueException'), "\n"; echo "\nTesting object with one trailing null byte in field name\n"; echo throws(function() { MongoDB\BSON\fromPHP(new MySerializable((object) ["a\0" => 1])); }, 'MongoDB\Driver\Exception\UnexpectedValueException'), "\n"; echo "\nTesting object with multiple null bytes in field name\n"; echo throws(function() { MongoDB\BSON\fromPHP(new MySerializable((object) ["\0\0\0" => 1])); }, 'MongoDB\Driver\Exception\UnexpectedValueException'), "\n"; ?> ===DONE=== <?php exit(0); ?> --EXPECTF-- Testing array with one leading null byte in field name Deprecated: Function MongoDB\BSON\fromPHP() is deprecated in %s OK: Got MongoDB\Driver\Exception\UnexpectedValueException BSON keys cannot contain null bytes. Unexpected null byte after "". Testing array with one trailing null byte in field name Deprecated: Function MongoDB\BSON\fromPHP() is deprecated in %s OK: Got MongoDB\Driver\Exception\UnexpectedValueException BSON keys cannot contain null bytes. Unexpected null byte after "a". Testing array with multiple null bytes in field name Deprecated: Function MongoDB\BSON\fromPHP() is deprecated in %s OK: Got MongoDB\Driver\Exception\UnexpectedValueException BSON keys cannot contain null bytes. Unexpected null byte after "". Testing object with one leading null byte in field name Deprecated: Function MongoDB\BSON\fromPHP() is deprecated in %s OK: Got MongoDB\Driver\Exception\UnexpectedValueException BSON keys cannot contain null bytes. Unexpected null byte after "". Testing object with one trailing null byte in field name Deprecated: Function MongoDB\BSON\fromPHP() is deprecated in %s OK: Got MongoDB\Driver\Exception\UnexpectedValueException BSON keys cannot contain null bytes. Unexpected null byte after "a". Testing object with multiple null bytes in field name Deprecated: Function MongoDB\BSON\fromPHP() is deprecated in %s OK: Got MongoDB\Driver\Exception\UnexpectedValueException BSON keys cannot contain null bytes. Unexpected null byte after "". ===DONE===