diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index 5f011a97..23ecc548 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -639,8 +639,8 @@ static bool process_client_40(shared_ptr, template static bool process_client_81(shared_ptr, ProxyServer::LinkedSession& session, uint16_t, uint32_t, string& data) { + auto& cmd = check_size_t(data); if (session.license) { - auto& cmd = check_size_t(data); if (cmd.from_guild_card_number == session.license->serial_number) { cmd.from_guild_card_number = session.remote_guild_card_number; } @@ -648,6 +648,8 @@ static bool process_client_81(shared_ptr, cmd.to_guild_card_number = session.remote_guild_card_number; } } + // GC clients send uninitialized memory here; don't forward it + cmd.text.clear_after(cmd.text.len()); return true; }