mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 08:38:49 -05:00
schannel: fix memory leak when using get_cert_location
The get_cert_location function allocates memory only on success. Previously get_cert_location was able to allocate memory and return error. It wasn't obvious and in this case the memory wasn't released. Fixes #5855 Closes #5860
This commit is contained in:
parent
99119fc8a3
commit
01e2679b49
@ -346,6 +346,8 @@ set_ssl_ciphers(SCHANNEL_CRED *schannel_cred, char *ciphers)
|
||||
}
|
||||
|
||||
#ifdef HAS_CLIENT_CERT_PATH
|
||||
|
||||
/* Function allocates memory for store_path only if CURLE_OK is returned */
|
||||
static CURLcode
|
||||
get_cert_location(TCHAR *path, DWORD *store_name, TCHAR **store_path,
|
||||
TCHAR **thumbprint)
|
||||
@ -388,16 +390,16 @@ get_cert_location(TCHAR *path, DWORD *store_name, TCHAR **store_path,
|
||||
if(sep == NULL)
|
||||
return CURLE_SSL_CERTPROBLEM;
|
||||
|
||||
*thumbprint = sep + 1;
|
||||
if(_tcslen(*thumbprint) != CERT_THUMBPRINT_STR_LEN)
|
||||
return CURLE_SSL_CERTPROBLEM;
|
||||
|
||||
*sep = TEXT('\0');
|
||||
*store_path = _tcsdup(store_path_start);
|
||||
*sep = TEXT('\\');
|
||||
if(*store_path == NULL)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
|
||||
*thumbprint = sep + 1;
|
||||
if(_tcslen(*thumbprint) != CERT_THUMBPRINT_STR_LEN)
|
||||
return CURLE_SSL_CERTPROBLEM;
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user