diff --git a/dNet/MasterPackets.h b/dNet/MasterPackets.h index f4b9b5e8e..b08c0957b 100644 --- a/dNet/MasterPackets.h +++ b/dNet/MasterPackets.h @@ -92,7 +92,7 @@ namespace MasterPackets { // Auth -> master: an account logged in with this session key struct SetSessionKey : public LUBitStream { - uint32_t sessionKey{}; + LUString sessionKey{}; // 32 hex characters LUString username{}; SetSessionKey() : LUBitStream(ServiceType::MASTER, MessageType::Master::SET_SESSION_KEY) {} @@ -102,7 +102,7 @@ namespace MasterPackets { // Master -> world: answer to RequestSessionKey struct SessionKeyResponse : public LUBitStream { - uint32_t sessionKey{}; + LUString sessionKey{}; LUWString username{}; SessionKeyResponse() : LUBitStream(ServiceType::MASTER, MessageType::Master::SESSION_KEY_RESPONSE) {} @@ -112,7 +112,7 @@ namespace MasterPackets { // Master -> every server: the account logged in again with a new session key struct NewSessionAlert : public LUBitStream { - uint32_t sessionKey{}; + LUString sessionKey{}; LUString username{}; NewSessionAlert() : LUBitStream(ServiceType::MASTER, MessageType::Master::NEW_SESSION_ALERT) {} diff --git a/dNet/PacketDecoder.cpp b/dNet/PacketDecoder.cpp index 0116e08c7..fff599bd8 100644 --- a/dNet/PacketDecoder.cpp +++ b/dNet/PacketDecoder.cpp @@ -245,9 +245,9 @@ namespace { { K(S::CHAT, MessageType::Chat::GENERAL_CHAT_MESSAGE), { nullptr, Scrub(nullptr, [](auto& p) { X(p.senderName); X(p.message); }) } }, { K(S::CHAT, MessageType::Chat::PRIVATE_CHAT_MESSAGE), { nullptr, Scrub(nullptr, [](auto& p) { X(p.senderName); X(p.receiverName); X(p.message); }) } }, { K(S::MASTER, MessageType::Master::REQUEST_SESSION_KEY), { nullptr, Scrub([](auto& p) { X(p.username); }) } }, - { K(S::MASTER, MessageType::Master::SESSION_KEY_RESPONSE), { Blank([](auto& p) { p.sessionKey = 0; }), Scrub([](auto& p) { X(p.username); }) } }, - { K(S::MASTER, MessageType::Master::SET_SESSION_KEY), { Blank([](auto& p) { p.sessionKey = 0; }), Scrub([](auto& p) { X(p.username); }) } }, - { K(S::MASTER, MessageType::Master::NEW_SESSION_ALERT), { Blank([](auto& p) { p.sessionKey = 0; }), Scrub([](auto& p) { X(p.username); }) } }, + { K(S::MASTER, MessageType::Master::SESSION_KEY_RESPONSE), { Blank([](auto& p) { p.sessionKey.string.clear(); }), Scrub([](auto& p) { X(p.username); }) } }, + { K(S::MASTER, MessageType::Master::SET_SESSION_KEY), { Blank([](auto& p) { p.sessionKey.string.clear(); }), Scrub([](auto& p) { X(p.username); }) } }, + { K(S::MASTER, MessageType::Master::NEW_SESSION_ALERT), { Blank([](auto& p) { p.sessionKey.string.clear(); }), Scrub([](auto& p) { X(p.username); }) } }, }; return registry; } diff --git a/tests/dGameTests/dNetTests/Legacy/MasterPacketsLegacy.h b/tests/dGameTests/dNetTests/Legacy/MasterPacketsLegacy.h index 06ccc544d..c21e87225 100644 --- a/tests/dGameTests/dNetTests/Legacy/MasterPacketsLegacy.h +++ b/tests/dGameTests/dNetTests/Legacy/MasterPacketsLegacy.h @@ -119,14 +119,14 @@ namespace LegacyMaster { } // dMasterServer/MasterServer.cpp SET_SESSION_KEY, and dNet/AuthPackets.cpp - inline void WriteSessionKey(RakNet::BitStream& bitStream, MessageType::Master type, uint32_t sessionKey, const LUString& username) { + inline void WriteSessionKey(RakNet::BitStream& bitStream, MessageType::Master type, const LUString& sessionKey, const LUString& username) { BitStreamUtils::WriteHeader(bitStream, ServiceType::MASTER, type); bitStream.Write(sessionKey); bitStream.Write(username); } // dMasterServer/MasterServer.cpp REQUEST_SESSION_KEY - inline void WriteSessionKeyResponse(RakNet::BitStream& bitStream, uint32_t sessionKey, const LUWString& username) { + inline void WriteSessionKeyResponse(RakNet::BitStream& bitStream, const LUString& sessionKey, const LUWString& username) { BitStreamUtils::WriteHeader(bitStream, ServiceType::MASTER, MessageType::Master::SESSION_KEY_RESPONSE); bitStream.Write(sessionKey); bitStream.Write(username); diff --git a/tests/dGameTests/dNetTests/MasterPacketsTests.cpp b/tests/dGameTests/dNetTests/MasterPacketsTests.cpp index cd80aa584..6ddcdb6b0 100644 --- a/tests/dGameTests/dNetTests/MasterPacketsTests.cpp +++ b/tests/dGameTests/dNetTests/MasterPacketsTests.cpp @@ -167,7 +167,7 @@ TEST(MasterPacketsTests, ServerInfoMatchesLegacy) { } TEST(MasterPacketsTests, SessionKeysMatchLegacy) { - for (const uint32_t key : { 0u, 12345u, 0xFFFFFFFFu }) { + for (const auto& key : { LUString(""), LUString("0123456789abcdef0123456789abcdef"), LUString("ffffffffffffffffffffffffffffffff") }) { for (const auto& name : g_Strings) { if (name.size() > 33) continue; MasterPackets::SetSessionKey set; diff --git a/tests/dGameTests/dNetTests/PacketCaptureTests.cpp b/tests/dGameTests/dNetTests/PacketCaptureTests.cpp index ca7f479b8..626179af6 100644 --- a/tests/dGameTests/dNetTests/PacketCaptureTests.cpp +++ b/tests/dGameTests/dNetTests/PacketCaptureTests.cpp @@ -351,14 +351,14 @@ TEST(PacketDecoderTests, NamesEveryService) { TEST(PacketDecoderTests, SessionKeysBetweenServersAreBlanked) { MasterPackets::SetSessionKey key; - key.sessionKey = 0xDEADBEEF; + const std::string secret = "0123456789abcdef0123456789abcdef"; + key.sessionKey = LUString(secret); key.username = LUString("alice"); RakNet::BitStream stream; key.WritePacket(stream); std::string bytes(reinterpret_cast(stream.GetData()), stream.GetNumberOfBytesUsed()); ASSERT_TRUE(PacketDecoder::Redact(bytes)); - const uint32_t secret = 0xDEADBEEF; - EXPECT_EQ(bytes.find(std::string(reinterpret_cast(&secret), 4)), std::string::npos); + EXPECT_EQ(bytes.find(secret), std::string::npos); } namespace {