endianness
This commit is contained in:
@@ -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
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user