From 39947265c1e6d052547634cd6b7fb9d91bb8165f Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Sat, 21 May 2022 17:26:45 +0200 Subject: [PATCH] Fix crash if disconnected while connecting --- src/client/component/network.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/client/component/network.cpp b/src/client/component/network.cpp index 5f77a26b..9d61d4e3 100644 --- a/src/client/component/network.cpp +++ b/src/client/component/network.cpp @@ -131,6 +131,20 @@ namespace network closesocket(sock); return 0; } + + utils::hook::detour clear_client_state_hook; + void clear_client_state_stub(int a1) + { + // Kinda shit but it works + // does a bunch of memset on bad pointers if called while connecting + __try + { + clear_client_state_hook.invoke(a1); + } + __except (EXCEPTION_EXECUTE_HANDLER) + { + } + } } void on(const std::string& command, const callback& callback) @@ -313,6 +327,9 @@ namespace network // Use our own socket since the game's socket doesn't work with non localhost addresses // why? no idea utils::hook::jump(0x5BD210_b, create_socket, true); + + // Prevent client from crashing if disconnected while connecting + clear_client_state_hook.create(0x12D950_b, clear_client_state_stub); } } };