From b24e5815bc3bbe438d2c1cd5621f04c5b06ad00b Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Tue, 31 Oct 2023 19:14:07 +0100 Subject: [PATCH] Fix memory leak in token authentication system Must free claims after creating them! --- r5dev/engine/client/client.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/r5dev/engine/client/client.cpp b/r5dev/engine/client/client.cpp index 19e44f3e..dc74c0a5 100644 --- a/r5dev/engine/client/client.cpp +++ b/r5dev/engine/client/client.cpp @@ -110,6 +110,8 @@ bool CClient::Authenticate(const char* const playerName, char* const reasonBuf, if (r != L8W8JWT_SUCCESS) { FORMAT_ERROR_REASON("Code %i", r); + l8w8jwt_free_claims(claims, numClaims); + return false; } @@ -119,6 +121,8 @@ bool CClient::Authenticate(const char* const playerName, char* const reasonBuf, l8w8jwt_get_validation_result_desc(validation_result, reasonBuffer, sizeof(reasonBuffer)); FORMAT_ERROR_REASON("%s", reasonBuffer); + l8w8jwt_free_claims(claims, numClaims); + return false; } @@ -143,6 +147,8 @@ bool CClient::Authenticate(const char* const playerName, char* const reasonBuf, if (hashedNewId.compare(sessionId) != 0) { FORMAT_ERROR_REASON("Token is not authorized for the connecting client"); + l8w8jwt_free_claims(claims, numClaims); + return false; } @@ -153,9 +159,13 @@ bool CClient::Authenticate(const char* const playerName, char* const reasonBuf, if (!foundSessionId) { FORMAT_ERROR_REASON("No session ID"); + l8w8jwt_free_claims(claims, numClaims); + return false; } + l8w8jwt_free_claims(claims, numClaims); + #undef REJECT_CONNECTION #endif // !CLIENT_DLL