Commit fd3c8335 authored by Dylan Smith's avatar Dylan Smith Committed by Alexandre Julliard

secur32: Free schannel handle table.

The table is initialized on process attach, and should be freed on process detach (which is where SECUR32_deinitSchannelSP gets called).
parent fdcfbe21
......@@ -1413,8 +1413,33 @@ fail:
void SECUR32_deinitSchannelSP(void)
{
int i = schan_handle_table_size;
if (!libgnutls_handle) return;
/* deinitialized sessions first because a pointer to the credentials
* are stored for the session by calling gnutls_credentials_set. */
while (--i)
{
if (schan_handle_table[i].type == SCHAN_HANDLE_CTX)
{
struct schan_context *ctx = schan_free_handle(i, SCHAN_HANDLE_CTX);
pgnutls_deinit(ctx->session);
HeapFree(GetProcessHeap(), 0, ctx);
}
}
i = schan_handle_table_size;
while (--i)
{
if (schan_handle_table[i].type != SCHAN_HANDLE_FREE)
{
struct schan_credentials *cred;
cred = schan_free_handle(i, SCHAN_HANDLE_CRED);
pgnutls_certificate_free_credentials(cred->credentials);
HeapFree(GetProcessHeap(), 0, cred);
}
}
HeapFree(GetProcessHeap(), 0, schan_handle_table);
pgnutls_global_deinit();
wine_dlclose(libgnutls_handle, NULL, 0);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment