From f42f8c32fd5596b62e6b304963722a6198350e09 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 16 Nov 2022 15:00:23 +0100 Subject: [PATCH] [core,test] Fix TestConnect use after free --- libfreerdp/core/test/TestConnect.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/libfreerdp/core/test/TestConnect.c b/libfreerdp/core/test/TestConnect.c index 86928c839..79a41529f 100644 --- a/libfreerdp/core/test/TestConnect.c +++ b/libfreerdp/core/test/TestConnect.c @@ -57,6 +57,8 @@ static int runInstance(int argc, char* argv[], freerdp** inst, DWORD timeout) rc = 0; finish: freerdp_client_context_free(context); + if (inst) + *inst = NULL; return rc; } @@ -137,14 +139,17 @@ static int testAbort(int port) WaitForSingleObject(s_sync, INFINITE); Sleep(100); /* Wait until freerdp_connect has been called */ - freerdp_abort_connect_context(instance->context); - - if (!freerdp_shall_disconnect_context(instance->context)) + if (instance) { - CloseHandle(s_sync); - CloseHandle(thread); - s_sync = NULL; - return -1; + freerdp_abort_connect_context(instance->context); + + if (!freerdp_shall_disconnect_context(instance->context)) + { + CloseHandle(s_sync); + CloseHandle(thread); + s_sync = NULL; + return -1; + } } status = WaitForSingleObject(thread, 20000);