From e321fd5bca7d74c7ed9769e95d3ebb242aa70a2c Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Fri, 4 Nov 2022 17:26:57 -0700 Subject: [PATCH] fix some proxy server uninitialized memory bugs --- src/ProxyCommands.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index efa294e2..597c511f 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -175,7 +175,7 @@ static HandlerResult S_G_9A(shared_ptr, cmd.unused1 = 0; cmd.unused2 = 0; cmd.sub_version = session.sub_version; - cmd.is_extended = (session.remote_guild_card_number < 0) ? 0 : 1; + cmd.is_extended = (session.remote_guild_card_number < 0) ? 1 : 0; cmd.language = session.language; cmd.serial_number = string_printf("%08" PRIX32 "", session.license->serial_number); cmd.access_key = session.license->access_key; @@ -183,6 +183,8 @@ static HandlerResult S_G_9A(shared_ptr, cmd.access_key2 = cmd.access_key; cmd.name = session.character_name; cmd.client_config.data = session.remote_client_config_data; + cmd.extension.menu_id = 0; + cmd.extension.lobby_id = 0; // If there's a guild card number, a shorter 9E is sent that ends // right after the client config data @@ -384,6 +386,8 @@ static HandlerResult S_V123P_02_17( cmd.access_key2 = cmd.access_key; cmd.name = session.character_name; cmd.client_config.data = session.remote_client_config_data; + cmd.extension.menu_id = 0; + cmd.extension.lobby_id = 0; session.server_channel.send(0x9E, 0x01, &cmd, sizeof(C_Login_GC_9E)); return HandlerResult::Type::SUPPRESS; @@ -501,7 +505,7 @@ static HandlerResult S_V123_04(shared_ptr, : "t Port Map. Copyright SEGA Enter", session.remote_client_config_data.bytes()); memcpy(session.remote_client_config_data.data(), &cmd.cfg, - min(data.size() - sizeof(S_UpdateClientConfig_DC_PC_V3_04), + min(data.size() - offsetof(S_UpdateClientConfig_DC_PC_V3_04, cfg), session.remote_client_config_data.bytes())); // If the guild card number was not set, pretend (to the server) that this is