From 5beb181decfe04739bc326f89e007491d7d1ebbe Mon Sep 17 00:00:00 2001 From: Adrian A Date: Thu, 11 May 2017 13:21:47 -0700 Subject: [PATCH] Fix handle leaks in encomsp and remdesk server Ensure proper thread cleanup when these channel servers are stopped. --- channels/encomsp/server/encomsp_main.c | 4 ++++ channels/remdesk/server/remdesk_main.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/channels/encomsp/server/encomsp_main.c b/channels/encomsp/server/encomsp_main.c index bbbe9a748..d32a82089 100644 --- a/channels/encomsp/server/encomsp_main.c +++ b/channels/encomsp/server/encomsp_main.c @@ -338,6 +338,7 @@ static UINT encomsp_server_stop(EncomspServerContext* context) } CloseHandle(context->priv->Thread); + CloseHandle(context->priv->StopEvent); return error; } @@ -368,6 +369,9 @@ void encomsp_server_context_free(EncomspServerContext* context) { if (context) { + if (context->priv->ChannelHandle != INVALID_HANDLE_VALUE) + WTSVirtualChannelClose(context->priv->ChannelHandle); + free(context->priv); free(context); } diff --git a/channels/remdesk/server/remdesk_main.c b/channels/remdesk/server/remdesk_main.c index fd0087384..3e226b869 100644 --- a/channels/remdesk/server/remdesk_main.c +++ b/channels/remdesk/server/remdesk_main.c @@ -756,6 +756,7 @@ static UINT remdesk_server_stop(RemdeskServerContext* context) } CloseHandle(context->priv->Thread); + CloseHandle(context->priv->StopEvent); return CHANNEL_RC_OK; } @@ -787,6 +788,9 @@ void remdesk_server_context_free(RemdeskServerContext* context) { if (context) { + if (context->priv->ChannelHandle != INVALID_HANDLE_VALUE) + WTSVirtualChannelClose(context->priv->ChannelHandle); + free(context->priv); free(context); }