From a7244b75b70dd5ff1e2e4ebbc4fb3c955ebfadae Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sat, 23 Apr 2022 10:23:59 -0700 Subject: [PATCH] handle extra space after choice search result on proxy server --- src/ProxyCommands.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index 7939f742..c39e7fa6 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -332,7 +332,9 @@ static bool process_server_C4(shared_ptr, ProxyServer::LinkedSession& session, uint16_t, uint32_t flag, string& data) { if (session.license) { size_t expected_size = sizeof(CmdT) * flag; - auto* entries = &check_size_t(data, expected_size, expected_size); + // Some servers (e.g. Schtserv) send extra data on the end of this command; + // the client ignores it so we can ignore it too + auto* entries = &check_size_t(data, expected_size, 0xFFFF); for (size_t x = 0; x < flag; x++) { if (entries[x].guild_card_number == session.remote_guild_card_number) { entries[x].guild_card_number = session.license->serial_number;