From bdae339268b21fd7b0b6f8218ca5ee417027fa4b Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Tue, 19 Sep 2017 12:33:33 +0200 Subject: [PATCH] Check and invalidate handles on free. --- libfreerdp/core/nla.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libfreerdp/core/nla.c b/libfreerdp/core/nla.c index e3e1899..b41531a 100644 --- a/libfreerdp/core/nla.c +++ b/libfreerdp/core/nla.c @@ -507,8 +507,11 @@ static int nla_client_recv(rdpNla* nla) } nla_buffer_free(nla); - nla->table->FreeCredentialsHandle(&nla->credentials); - + if (SecIsValidHandle(&nla->credentials)) + { + nla->table->FreeCredentialsHandle(&nla->credentials); + SecInvalidateHandle(&nla->credentials); + } if (nla->status != SEC_E_OK) { WLog_ERR(TAG, "FreeCredentialsHandle status %s [0x%08"PRIX32"]", @@ -1853,7 +1856,11 @@ void nla_free(rdpNla* nla) if (nla->table) { SECURITY_STATUS status; - status = nla->table->FreeCredentialsHandle(&nla->credentials); + if (SecIsValidHandle(&nla->credentials)) + { + status = nla->table->FreeCredentialsHandle(&nla->credentials); + SecInvalidateHandle(&nla->credentials); + } status = nla->table->DeleteSecurityContext(&nla->context); -- 2.7.4