From 27bd2cd2ecdafaeb93ab4e4278d3f37d6be0c02e Mon Sep 17 00:00:00 2001 From: DcruBro Date: Tue, 10 Feb 2026 19:24:07 +0100 Subject: [PATCH] endianness --- src/client/net/udp/udp_client.cpp | 16 +++++++++------- src/server/net/udp/udp_server.cpp | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/client/net/udp/udp_client.cpp b/src/client/net/udp/udp_client.cpp index b284a23..9c12c8a 100644 --- a/src/client/net/udp/udp_client.cpp +++ b/src/client/net/udp/udp_client.cpp @@ -72,10 +72,11 @@ namespace ColumnLynx::Net::UDP { reinterpret_cast(&hdr), reinterpret_cast(&hdr) + sizeof(UDPPacketHeader) ); - uint64_t sessionID = ClientSession::getInstance().getSessionID(); + uint32_t sessionID = static_cast(ClientSession::getInstance().getSessionID()); + uint32_t sessionIDNet = sessionID; packet.insert(packet.end(), - reinterpret_cast(&sessionID), - reinterpret_cast(&sessionID) + sizeof(uint64_t) + reinterpret_cast(&sessionIDNet), + reinterpret_cast(&sessionIDNet) + sizeof(uint32_t) ); packet.insert(packet.end(), encryptedPayload.begin(), encryptedPayload.end()); @@ -115,7 +116,7 @@ namespace ColumnLynx::Net::UDP { } void UDPClient::mHandlePacket(std::size_t bytes) { - if (bytes < sizeof(UDPPacketHeader) + sizeof(uint64_t)) { + if (bytes < sizeof(UDPPacketHeader) + sizeof(uint32_t)) { Utils::warn("UDP Client received packet too small to process."); return; } @@ -125,8 +126,9 @@ namespace ColumnLynx::Net::UDP { std::memcpy(&hdr, mRecvBuffer.data(), sizeof(UDPPacketHeader)); // Parse session ID - uint64_t sessionID; - std::memcpy(&sessionID, mRecvBuffer.data() + sizeof(UDPPacketHeader), sizeof(uint64_t)); + uint32_t sessionIDNet; + std::memcpy(&sessionIDNet, mRecvBuffer.data() + sizeof(UDPPacketHeader), sizeof(uint32_t)); + uint32_t sessionID = ntohl(sessionIDNet); if (sessionID != ClientSession::getInstance().getSessionID()) { Utils::warn("This packet that isn't for me! Dropping!"); @@ -135,7 +137,7 @@ namespace ColumnLynx::Net::UDP { // Decrypt payload std::vector ciphertext( - mRecvBuffer.begin() + sizeof(UDPPacketHeader) + sizeof(uint64_t), + mRecvBuffer.begin() + sizeof(UDPPacketHeader) + sizeof(uint32_t), mRecvBuffer.begin() + bytes ); diff --git a/src/server/net/udp/udp_server.cpp b/src/server/net/udp/udp_server.cpp index 85015a3..d99ee1e 100644 --- a/src/server/net/udp/udp_server.cpp +++ b/src/server/net/udp/udp_server.cpp @@ -31,10 +31,10 @@ namespace ColumnLynx::Net::UDP { const auto* hdr = reinterpret_cast(mRecvBuffer.data()); - // Get plaintext session ID (assuming first 4 bytes after nonce (header)) + // Get plaintext session ID (first 4 bytes after header, in network byte order) uint32_t sessionIDNet = 0; std::memcpy(&sessionIDNet, mRecvBuffer.data() + sizeof(UDPPacketHeader), sizeof(uint32_t)); - uint32_t sessionID = ntohl(sessionIDNet); + uint32_t sessionID = sessionIDNet; // ntohl(sessionIDNet); --- IGNORE --- auto it = mRecvBuffer.begin() + sizeof(UDPPacketHeader) + sizeof(uint32_t); std::vector encryptedPayload(it, mRecvBuffer.begin() + bytes);