From 5cd5f814e69a78faa17ce87e6c765f7707edd39f Mon Sep 17 00:00:00 2001 From: otavepto Date: Tue, 30 Apr 2024 00:26:43 +0300 Subject: [PATCH] * use corresponding steam types for auth functions * corrected the ticket size in `Auth_Manager::getWebApiTicket` --- dll/auth.cpp | 46 +++++++++++++++++++++++--------------------- dll/dll/auth.h | 4 ++-- dll/dll/steam_user.h | 2 +- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/dll/auth.cpp b/dll/auth.cpp index f70456ee..9495198d 100644 --- a/dll/auth.cpp +++ b/dll/auth.cpp @@ -158,49 +158,51 @@ Auth_Data Auth_Manager::getTicketData( void *pTicket, int cbMaxTicket, uint32 *p //Steam returns 234 #define STEAM_AUTH_TICKET_SIZE 256 //234 -uint32 Auth_Manager::getTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) +HAuthTicket Auth_Manager::getTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) { if (settings->enable_new_app_ticket) { - if (cbMaxTicket < STEAM_TICKET_MIN_SIZE_NEW) return 0; + if (cbMaxTicket < STEAM_TICKET_MIN_SIZE_NEW) return k_HAuthTicketInvalid; } else { - if (cbMaxTicket < STEAM_TICKET_MIN_SIZE) return 0; + if (cbMaxTicket < STEAM_TICKET_MIN_SIZE) return k_HAuthTicketInvalid; if (cbMaxTicket > STEAM_AUTH_TICKET_SIZE) cbMaxTicket = STEAM_AUTH_TICKET_SIZE; } Auth_Data ticket_data = getTicketData(pTicket, cbMaxTicket, pcbTicket ); - if (*pcbTicket > cbMaxTicket) - return 0; - uint32 ttt = ticket_data.number; - GetAuthSessionTicketResponse_t data; - data.m_hAuthTicket = ttt; - data.m_eResult = k_EResultOK; - callbacks->addCBResult(data.k_iCallback, &data, sizeof(data), STEAM_TICKET_PROCESS_TIME); + if (*pcbTicket > cbMaxTicket) + return k_HAuthTicketInvalid; + + GetAuthSessionTicketResponse_t data{}; + data.m_hAuthTicket = (HAuthTicket)ticket_data.number; + data.m_eResult = EResult::k_EResultOK; + + callbacks->addCBResult(data.k_iCallback, &data, sizeof(data), STEAM_TICKET_PROCESS_TIME); outbound.push_back(ticket_data); - return ttt; + return data.m_hAuthTicket; } -uint32 Auth_Manager::getWebApiTicket( const char* pchIdentity ) +HAuthTicket Auth_Manager::getWebApiTicket( const char* pchIdentity ) { // https://docs.unity.com/ugs/en-us/manual/authentication/manual/platform-signin-steam GetTicketForWebApiResponse_t data{}; - uint32 cbTicket = 0; - Auth_Data ticket_data = getTicketData(data.m_rgubTicket, STEAM_AUTH_TICKET_SIZE, &cbTicket); - if (cbTicket > STEAM_AUTH_TICKET_SIZE) - return 0; - data.m_cubTicket = (int)cbTicket; - uint32 ttt = ticket_data.number; - data.m_hAuthTicket = ttt; - data.m_eResult = k_EResultOK; - callbacks->addCBResult(data.k_iCallback, &data, sizeof(data), STEAM_TICKET_PROCESS_TIME); + uint32 cbTicket = 0; + Auth_Data ticket_data = getTicketData(data.m_rgubTicket, sizeof(data.m_rgubTicket), &cbTicket); + + if (cbTicket > sizeof(data.m_rgubTicket)) + return k_HAuthTicketInvalid; + + data.m_cubTicket = (int)cbTicket; + data.m_hAuthTicket = (HAuthTicket)ticket_data.number; + data.m_eResult = EResult::k_EResultOK; + callbacks->addCBResult(data.k_iCallback, &data, sizeof(data), STEAM_TICKET_PROCESS_TIME); outbound.push_back(ticket_data); - return ttt; + return data.m_hAuthTicket; } CSteamID Auth_Manager::fakeUser() diff --git a/dll/dll/auth.h b/dll/dll/auth.h index 80631df8..2c3fd036 100644 --- a/dll/dll/auth.h +++ b/dll/dll/auth.h @@ -645,8 +645,8 @@ public: ~Auth_Manager(); void Callback(Common_Message *msg); - uint32 getTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ); - uint32 getWebApiTicket( const char *pchIdentity ); + HAuthTicket getTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ); + HAuthTicket getWebApiTicket( const char *pchIdentity ); void cancelTicket(uint32 number); EBeginAuthSessionResult beginAuth(const void *pAuthTicket, int cbAuthTicket, CSteamID steamID); bool endAuth(CSteamID id); diff --git a/dll/dll/steam_user.h b/dll/dll/steam_user.h index d398ec39..a505fb30 100644 --- a/dll/dll/steam_user.h +++ b/dll/dll/steam_user.h @@ -311,7 +311,7 @@ HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTic // if a Steam ID is passed Steam will only allow the ticket to be used by that Steam ID HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket, const SteamNetworkingIdentity *pSteamNetworkingIdentity ) { - PRINT_DEBUG("%i", cbMaxTicket); + PRINT_DEBUG("%p [%i] %p", pTicket, cbMaxTicket, pcbTicket); std::lock_guard lock(global_mutex); if (!pTicket) return k_HAuthTicketInvalid;