From 8858fc9b667d6eb7b2faa8c4b45f450e508604f6 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Mon, 8 Feb 2010 09:20:58 +0100 Subject: [PATCH] wininet: Don't call libcrypto function after closing the library. Spotted by Paul Vriens. --- dlls/wininet/netconnection.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dlls/wininet/netconnection.c b/dlls/wininet/netconnection.c index 0e7b62acc94..c2560b5da37 100644 --- a/dlls/wininet/netconnection.c +++ b/dlls/wininet/netconnection.c @@ -160,6 +160,7 @@ MAKE_FUNCPTR(sk_value); #undef MAKE_FUNCPTR static CRITICAL_SECTION *ssl_locks; +static unsigned int num_ssl_locks; static unsigned long ssl_thread_id(void) { @@ -458,14 +459,14 @@ DWORD NETCON_init(WININET_NETCONNECTION *connection, BOOL useSSL) pSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, netconn_secure_verify); pCRYPTO_set_id_callback(ssl_thread_id); - ssl_locks = HeapAlloc(GetProcessHeap(), 0, - pCRYPTO_num_locks() * sizeof(CRITICAL_SECTION)); + num_ssl_locks = pCRYPTO_num_locks(); + ssl_locks = HeapAlloc(GetProcessHeap(), 0, num_ssl_locks * sizeof(CRITICAL_SECTION)); if (!ssl_locks) { LeaveCriticalSection(&init_ssl_cs); return ERROR_OUTOFMEMORY; } - for (i = 0; i < pCRYPTO_num_locks(); i++) + for (i = 0; i < num_ssl_locks; i++) InitializeCriticalSection(&ssl_locks[i]); pCRYPTO_set_locking_callback(ssl_lock_callback); LeaveCriticalSection(&init_ssl_cs); @@ -494,7 +495,7 @@ void NETCON_unload(void) if (ssl_locks) { int i; - for (i = 0; i < pCRYPTO_num_locks(); i++) DeleteCriticalSection(&ssl_locks[i]); + for (i = 0; i < num_ssl_locks; i++) DeleteCriticalSection(&ssl_locks[i]); HeapFree(GetProcessHeap(), 0, ssl_locks); } #endif