OH YEAH.
This commit is contained in:
@@ -28,7 +28,8 @@ typedef uint64_t Timestamp;
|
||||
#ifdef _WIN32
|
||||
|
||||
#pragma comment(lib,"wsock32.lib") // Pour pouvoir faire fonctionner le linker sans le vcxproject
|
||||
|
||||
#pragma comment(lib,"ws2_32.lib")
|
||||
#include <ws2tcpip.h>
|
||||
#include <Windows.h>
|
||||
#include <cstdio>
|
||||
#include <ctime>
|
||||
|
@@ -18,7 +18,6 @@ void netprot::Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen) {
|
||||
|
||||
void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) {
|
||||
*buf[0] = netprot::PACKET_TYPE::LOGINF;
|
||||
void* nom = &linfo->name;
|
||||
char* buff = *buf + 1;
|
||||
|
||||
size_t namesize = 1;
|
||||
@@ -27,22 +26,24 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) {
|
||||
if (linfo->name[x] != (char)'\0')
|
||||
++namesize;
|
||||
else break;
|
||||
|
||||
memcpy(buff, nom, sizeof(linfo->name));
|
||||
|
||||
memcpy(*buf + 1, &linfo->name, namesize);
|
||||
uint64_t sid = linfo->sid;
|
||||
char diff[sizeof(uint64_t)] = { (sid >> 56) & 0xFF,
|
||||
uint8_t diff[sizeof(uint64_t)] = {
|
||||
(sid >> 56) & 0xFF,
|
||||
(sid >> 48) & 0xFF,
|
||||
(sid >> 40) & 0xFF,
|
||||
(sid >> 32) & 0xFF,
|
||||
(sid >> 24) & 0xFF,
|
||||
(sid >> 16) & 0xFF,
|
||||
(sid >> 8) & 0xFF,
|
||||
sid & 0xFF };
|
||||
sid & 0xFF
|
||||
};
|
||||
|
||||
void* ptrsid = *buf + namesize;
|
||||
memcpy(ptrsid, &diff, sizeof(uint64_t));
|
||||
char* ptrsid = *buf + namesize + 2;
|
||||
memcpy(ptrsid, diff, sizeof(uint64_t));
|
||||
|
||||
*buflen = sizeof(LoginInfo) + 1;
|
||||
*buflen = namesize + sizeof(uint64_t) + 2;
|
||||
}
|
||||
|
||||
void netprot::Serialize(SelfInfo* sinfo, char* buf[], uint32_t* buflen) {
|
||||
@@ -84,10 +85,10 @@ bool netprot::Deserialize(TeamInfo* tinfo, char* buf, const uint32_t buflen) {
|
||||
}
|
||||
|
||||
bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) {
|
||||
if (buflen < sizeof(sizeof(LoginInfo)) + 1)
|
||||
if (buflen < sizeof(LoginInfo) + 3)
|
||||
return false;
|
||||
|
||||
size_t namesize = 0;
|
||||
size_t namesize = 1;
|
||||
|
||||
for (int x = 0; x < sizeof(linfo->name); ++x)
|
||||
if (buf[x] != (char)'\0')
|
||||
@@ -97,15 +98,16 @@ bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) {
|
||||
memcpy((void*)&linfo->name, (void*)&buf[1], namesize);
|
||||
|
||||
uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 };
|
||||
memcpy(&diff, &buf[namesize], sizeof(uint64_t));
|
||||
linfo->sid = (uint64_t)diff[0] << 56 |
|
||||
(uint64_t)diff[1] << 48 |
|
||||
(uint64_t)diff[2] << 40 |
|
||||
(uint64_t)diff[3] << 32 |
|
||||
(uint64_t)diff[4] << 24 |
|
||||
(uint64_t)diff[5] << 16 |
|
||||
(uint64_t)diff[6] << 8 |
|
||||
(uint64_t)diff[7];
|
||||
memcpy(diff, &buf[namesize + 1], sizeof(uint64_t));
|
||||
linfo->sid =
|
||||
(uint64_t)diff[0] << 56 |
|
||||
(uint64_t)diff[1] << 48 |
|
||||
(uint64_t)diff[2] << 40 |
|
||||
(uint64_t)diff[3] << 32 |
|
||||
(uint64_t)diff[4] << 24 |
|
||||
(uint64_t)diff[5] << 16 |
|
||||
(uint64_t)diff[6] << 8 |
|
||||
(uint64_t)diff[7];
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user