From 843993f02b900dd97f413468a482b8d6b19c967d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 22 Apr 2020 13:45:29 +0100 Subject: [PATCH] Throw a specific exception for zlib decompression failure --- src/network/mcpe/NetworkSession.php | 3 +- .../compression/DecompressionException.php | 28 +++++++++++++++++++ src/network/mcpe/compression/Zlib.php | 8 ++++-- 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/network/mcpe/compression/DecompressionException.php diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 906dbef54..5da1cf2cf 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -35,6 +35,7 @@ use pocketmine\form\Form; use pocketmine\math\Vector3; use pocketmine\network\BadPacketException; use pocketmine\network\mcpe\compression\CompressBatchPromise; +use pocketmine\network\mcpe\compression\DecompressionException; use pocketmine\network\mcpe\compression\Zlib; use pocketmine\network\mcpe\encryption\DecryptionException; use pocketmine\network\mcpe\encryption\NetworkCipher; @@ -280,7 +281,7 @@ class NetworkSession{ Timings::$playerNetworkReceiveDecompressTimer->startTiming(); try{ $stream = new PacketBatch(Zlib::decompress($payload)); - }catch(\ErrorException $e){ + }catch(DecompressionException $e){ $this->logger->debug("Failed to decompress packet: " . base64_encode($payload)); //TODO: this isn't incompatible game version if we already established protocol version throw BadPacketException::wrap($e, "Compressed packet batch decode error"); diff --git a/src/network/mcpe/compression/DecompressionException.php b/src/network/mcpe/compression/DecompressionException.php new file mode 100644 index 000000000..dfaf7e50e --- /dev/null +++ b/src/network/mcpe/compression/DecompressionException.php @@ -0,0 +1,28 @@ +