From 42014e80d0f12d2dddfa351e65b992a60b730eba Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 25 Oct 2018 13:13:14 +0200 Subject: [PATCH] Fixed sockfd/socketBio resource leak. --- libfreerdp/core/gateway/rpc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libfreerdp/core/gateway/rpc.c b/libfreerdp/core/gateway/rpc.c index 81db7c2..08813b2 100644 --- a/libfreerdp/core/gateway/rpc.c +++ b/libfreerdp/core/gateway/rpc.c @@ -671,24 +671,36 @@ static BOOL rpc_channel_tls_connect(RpcChannel* channel, int timeout) socketBio = BIO_new(BIO_s_simple_socket()); if (!socketBio) + { + close(sockfd); return FALSE; + } BIO_set_fd(socketBio, sockfd, BIO_CLOSE); bufferedBio = BIO_new(BIO_s_buffered_socket()); if (!bufferedBio) + { + BIO_free_all(socketBio); return FALSE; + } bufferedBio = BIO_push(bufferedBio, socketBio); if (!BIO_set_nonblock(bufferedBio, TRUE)) + { + BIO_free_all(bufferedBio); return FALSE; + } if (channel->client->isProxy) { if (!proxy_connect(settings, bufferedBio, proxyUsername, proxyPassword, settings->GatewayHostname, settings->GatewayPort)) + { + BIO_free_all(bufferedBio); return FALSE; + } } channel->bio = bufferedBio; -- 2.7.4