[PATCH 1/1] secur32/schannel: Avoid use-after-free in AcquireClientCredentials() (Coverity).

Nikolay Sivov wine at gitlab.winehq.org
Sat Jun 4 10:07:55 CDT 2022


From: Nikolay Sivov <nsivov at codeweavers.com>

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/secur32/schannel.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c
index bc0867ca94b..5b4fb196aca 100644
--- a/dlls/secur32/schannel.c
+++ b/dlls/secur32/schannel.c
@@ -589,8 +589,9 @@ static SECURITY_STATUS schan_AcquireClientCredentials(const void *schanCred,
     }
     params.key_size = key_size;
     params.key_blob = key_blob;
-    if (GNUTLS_CALL( allocate_certificate_credentials, &params )) goto fail;
+    status = GNUTLS_CALL( allocate_certificate_credentials, &params );
     free(key_blob);
+    if (status) goto fail;
 
     handle = schan_alloc_handle(creds, SCHAN_HANDLE_CRED);
     if (handle == SCHAN_INVALID_HANDLE) goto fail;
@@ -609,7 +610,6 @@ static SECURITY_STATUS schan_AcquireClientCredentials(const void *schanCred,
 
 fail:
     free(creds);
-    free(key_blob);
     return SEC_E_INTERNAL_ERROR;
 }
 
-- 
GitLab

https://gitlab.winehq.org/wine/wine/-/merge_requests/186



More information about the wine-devel mailing list