diff --git a/.gitignore b/.gitignore index e56bbf257..869ab7e30 100755 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ DartConfiguration.tcl CMakeCPackOptions.cmake _CPack_Packages LICENSE.txt -external/* +/external/* !external/README *.a.objlist.cmake diff --git a/client/common/client.c b/client/common/client.c index 51973f4be..926ea9889 100644 --- a/client/common/client.c +++ b/client/common/client.c @@ -70,10 +70,13 @@ rdpContext* freerdp_client_context_new(RDP_CLIENT_ENTRY_POINTS* pEntryPoints) void freerdp_client_context_free(rdpContext* context) { freerdp* instance = context->instance; - - freerdp_context_free(instance); - free(instance->pClientEntryPoints); - freerdp_free(instance); + if (instance) + { + freerdp_context_free(instance); + free(instance->pClientEntryPoints); + freerdp_free(instance); + context->instance = NULL; + } } int freerdp_client_start(rdpContext* context) diff --git a/libfreerdp/crypto/tls.c b/libfreerdp/crypto/tls.c index 9d2c407ce..e5c496b40 100644 --- a/libfreerdp/crypto/tls.c +++ b/libfreerdp/crypto/tls.c @@ -798,21 +798,32 @@ void tls_free(rdpTls* tls) if (tls != NULL) { if (tls->ssl) + { SSL_free(tls->ssl); + tls->ssl = NULL; + } if (tls->ctx) + { SSL_CTX_free(tls->ctx); + tls->ctx = NULL; + } if (tls->PublicKey) + { free(tls->PublicKey); + tls->PublicKey = NULL; + } if (tls->Bindings) { free(tls->Bindings->Bindings); free(tls->Bindings); + tls->Bindings = NULL; } certificate_store_free(tls->certificate_store); + tls->certificate_store = NULL; free(tls); }