From 163ed225f211cc5b1805a8e1168a2177bae110f5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 1 Dec 2019 18:41:02 +0000 Subject: [PATCH] NetworkBinaryStream: fixed crash when non-compound root tag is provided for itemstack --- src/pocketmine/network/mcpe/NetworkBinaryStream.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pocketmine/network/mcpe/NetworkBinaryStream.php b/src/pocketmine/network/mcpe/NetworkBinaryStream.php index 32a3629e9..85c6766ab 100644 --- a/src/pocketmine/network/mcpe/NetworkBinaryStream.php +++ b/src/pocketmine/network/mcpe/NetworkBinaryStream.php @@ -93,7 +93,11 @@ class NetworkBinaryStream extends BinaryStream{ if($c !== 1){ throw new \UnexpectedValueException("Unexpected NBT count $c"); } - $nbt = (new NetworkLittleEndianNBTStream())->read($this->buffer, false, $this->offset, 512); + $decodedNBT = (new NetworkLittleEndianNBTStream())->read($this->buffer, false, $this->offset, 512); + if(!($decodedNBT instanceof CompoundTag)){ + throw new \UnexpectedValueException("Unexpected root tag type for itemstack"); + } + $nbt = $decodedNBT; }elseif($nbtLen !== 0){ throw new \UnexpectedValueException("Unexpected fake NBT length $nbtLen"); }