endianness

This commit is contained in:
2026-02-10 19:24:07 +01:00
parent 14298453b3
commit 27bd2cd2ec
2 changed files with 11 additions and 9 deletions

View File

@@ -72,10 +72,11 @@ namespace ColumnLynx::Net::UDP {
reinterpret_cast<uint8_t*>(&hdr), reinterpret_cast<uint8_t*>(&hdr),
reinterpret_cast<uint8_t*>(&hdr) + sizeof(UDPPacketHeader) reinterpret_cast<uint8_t*>(&hdr) + sizeof(UDPPacketHeader)
); );
uint64_t sessionID = ClientSession::getInstance().getSessionID(); uint32_t sessionID = static_cast<uint32_t>(ClientSession::getInstance().getSessionID());
uint32_t sessionIDNet = sessionID;
packet.insert(packet.end(), packet.insert(packet.end(),
reinterpret_cast<uint8_t*>(&sessionID), reinterpret_cast<uint8_t*>(&sessionIDNet),
reinterpret_cast<uint8_t*>(&sessionID) + sizeof(uint64_t) reinterpret_cast<uint8_t*>(&sessionIDNet) + sizeof(uint32_t)
); );
packet.insert(packet.end(), encryptedPayload.begin(), encryptedPayload.end()); packet.insert(packet.end(), encryptedPayload.begin(), encryptedPayload.end());
@@ -115,7 +116,7 @@ namespace ColumnLynx::Net::UDP {
} }
void UDPClient::mHandlePacket(std::size_t bytes) { 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."); Utils::warn("UDP Client received packet too small to process.");
return; return;
} }
@@ -125,8 +126,9 @@ namespace ColumnLynx::Net::UDP {
std::memcpy(&hdr, mRecvBuffer.data(), sizeof(UDPPacketHeader)); std::memcpy(&hdr, mRecvBuffer.data(), sizeof(UDPPacketHeader));
// Parse session ID // Parse session ID
uint64_t sessionID; uint32_t sessionIDNet;
std::memcpy(&sessionID, mRecvBuffer.data() + sizeof(UDPPacketHeader), sizeof(uint64_t)); std::memcpy(&sessionIDNet, mRecvBuffer.data() + sizeof(UDPPacketHeader), sizeof(uint32_t));
uint32_t sessionID = ntohl(sessionIDNet);
if (sessionID != ClientSession::getInstance().getSessionID()) { if (sessionID != ClientSession::getInstance().getSessionID()) {
Utils::warn("This packet that isn't for me! Dropping!"); Utils::warn("This packet that isn't for me! Dropping!");
@@ -135,7 +137,7 @@ namespace ColumnLynx::Net::UDP {
// Decrypt payload // Decrypt payload
std::vector<uint8_t> ciphertext( std::vector<uint8_t> ciphertext(
mRecvBuffer.begin() + sizeof(UDPPacketHeader) + sizeof(uint64_t), mRecvBuffer.begin() + sizeof(UDPPacketHeader) + sizeof(uint32_t),
mRecvBuffer.begin() + bytes mRecvBuffer.begin() + bytes
); );

View File

@@ -31,10 +31,10 @@ namespace ColumnLynx::Net::UDP {
const auto* hdr = reinterpret_cast<UDPPacketHeader*>(mRecvBuffer.data()); const auto* hdr = reinterpret_cast<UDPPacketHeader*>(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; uint32_t sessionIDNet = 0;
std::memcpy(&sessionIDNet, mRecvBuffer.data() + sizeof(UDPPacketHeader), sizeof(uint32_t)); 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); auto it = mRecvBuffer.begin() + sizeof(UDPPacketHeader) + sizeof(uint32_t);
std::vector<uint8_t> encryptedPayload(it, mRecvBuffer.begin() + bytes); std::vector<uint8_t> encryptedPayload(it, mRecvBuffer.begin() + bytes);