From 84291e798039bce314ee958f6b4c352be8d20331 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 13 May 2020 21:23:04 +0100 Subject: [PATCH] Throw a more specific exception for JWT handling errors --- src/network/mcpe/JwtException.php | 28 ++++++++++++++++++++++ src/network/mcpe/JwtUtils.php | 18 +++++++------- src/network/mcpe/auth/ProcessLoginTask.php | 5 ++-- src/network/mcpe/protocol/LoginPacket.php | 5 ++-- 4 files changed, 43 insertions(+), 13 deletions(-) create mode 100644 src/network/mcpe/JwtException.php diff --git a/src/network/mcpe/JwtException.php b/src/network/mcpe/JwtException.php new file mode 100644 index 000000000..14a3c21a2 --- /dev/null +++ b/src/network/mcpe/JwtException.php @@ -0,0 +1,28 @@ +getMessage(), 0, $e); } @@ -134,7 +135,7 @@ class ProcessLoginTask extends AsyncTask{ if(!JwtUtils::verify($jwt, $signingKey)){ throw new VerifyLoginException("%pocketmine.disconnect.invalidSession.badSignature"); } - }catch(\UnexpectedValueException $e){ + }catch(JwtException $e){ throw new VerifyLoginException($e->getMessage(), 0, $e); } diff --git a/src/network/mcpe/protocol/LoginPacket.php b/src/network/mcpe/protocol/LoginPacket.php index e8c90826f..c018f6582 100644 --- a/src/network/mcpe/protocol/LoginPacket.php +++ b/src/network/mcpe/protocol/LoginPacket.php @@ -25,6 +25,7 @@ namespace pocketmine\network\mcpe\protocol; #include +use pocketmine\network\mcpe\JwtException; use pocketmine\network\mcpe\JwtUtils; use pocketmine\network\mcpe\protocol\serializer\NetworkBinaryStream; use pocketmine\network\mcpe\protocol\types\login\AuthenticationData; @@ -89,7 +90,7 @@ class LoginPacket extends DataPacket implements ServerboundPacket{ //validate every chain element try{ [, $claims, ] = JwtUtils::parse($chain); - }catch(\UnexpectedValueException $e){ + }catch(JwtException $e){ throw new PacketDecodeException($e->getMessage(), 0, $e); } if(isset($claims["extraData"])){ @@ -118,7 +119,7 @@ class LoginPacket extends DataPacket implements ServerboundPacket{ $this->clientDataJwt = $buffer->get($buffer->getLInt()); try{ [, $clientData, ] = JwtUtils::parse($this->clientDataJwt); - }catch(\UnexpectedValueException $e){ + }catch(JwtException $e){ throw new PacketDecodeException($e->getMessage(), 0, $e); }