Commit 6720a129 authored by Kai Blin's avatar Kai Blin Committed by Alexandre Julliard

secur32: Delete session key and arc4 context when the session based security context is deleted.

parent d88d2d4d
...@@ -258,7 +258,6 @@ void cleanup_helper(PNegoHelper helper) ...@@ -258,7 +258,6 @@ void cleanup_helper(PNegoHelper helper)
return; return;
HeapFree(GetProcessHeap(), 0, helper->com_buf); HeapFree(GetProcessHeap(), 0, helper->com_buf);
HeapFree(GetProcessHeap(), 0, helper->session_key);
/* closing stdin will terminate ntlm_auth */ /* closing stdin will terminate ntlm_auth */
close(helper->pipe_out); close(helper->pipe_out);
......
...@@ -690,8 +690,7 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW( ...@@ -690,8 +690,7 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW(
} }
TRACE("Session key is %s\n", debugstr_a(buffer+3)); TRACE("Session key is %s\n", debugstr_a(buffer+3));
helper->valid_session_key = TRUE; helper->valid_session_key = TRUE;
if(!helper->session_key) helper->session_key = HeapAlloc(GetProcessHeap(), 0, bin_len);
helper->session_key = HeapAlloc(GetProcessHeap(), 0, bin_len);
if(!helper->session_key) if(!helper->session_key)
{ {
TRACE("Failed to allocate memory for session key\n"); TRACE("Failed to allocate memory for session key\n");
...@@ -1036,8 +1035,7 @@ static SECURITY_STATUS SEC_ENTRY ntlm_AcceptSecurityContext( ...@@ -1036,8 +1035,7 @@ static SECURITY_STATUS SEC_ENTRY ntlm_AcceptSecurityContext(
} }
TRACE("Session key is %s\n", debugstr_a(buffer+3)); TRACE("Session key is %s\n", debugstr_a(buffer+3));
helper->valid_session_key = TRUE; helper->valid_session_key = TRUE;
if(!helper->session_key) helper->session_key = HeapAlloc(GetProcessHeap(), 0, 16);
helper->session_key = HeapAlloc(GetProcessHeap(), 0, 16);
if(!helper->session_key) if(!helper->session_key)
{ {
TRACE("Failed to allocate memory for session key\n"); TRACE("Failed to allocate memory for session key\n");
...@@ -1081,20 +1079,22 @@ static SECURITY_STATUS SEC_ENTRY ntlm_CompleteAuthToken(PCtxtHandle phContext, ...@@ -1081,20 +1079,22 @@ static SECURITY_STATUS SEC_ENTRY ntlm_CompleteAuthToken(PCtxtHandle phContext,
*/ */
static SECURITY_STATUS SEC_ENTRY ntlm_DeleteSecurityContext(PCtxtHandle phContext) static SECURITY_STATUS SEC_ENTRY ntlm_DeleteSecurityContext(PCtxtHandle phContext)
{ {
SECURITY_STATUS ret; PNegoHelper helper;
TRACE("%p\n", phContext); TRACE("%p\n", phContext);
if (phContext) if (!phContext)
{ return SEC_E_INVALID_HANDLE;
phContext->dwUpper = 0;
phContext->dwLower = 0; helper = (PNegoHelper)phContext->dwLower;
ret = SEC_E_OK;
} phContext->dwUpper = 0;
else phContext->dwLower = 0;
{
ret = SEC_E_INVALID_HANDLE; SECUR32_arc4Cleanup(helper->crypt.ntlm.a4i);
} HeapFree(GetProcessHeap(), 0, helper->session_key);
return ret; helper->valid_session_key = FALSE;
return SEC_E_OK;
} }
/*********************************************************************** /***********************************************************************
......
...@@ -139,6 +139,7 @@ SECURITY_STATUS SECUR32_CreateNTLMv1SessionKey(PBYTE password, int len, PBYTE se ...@@ -139,6 +139,7 @@ SECURITY_STATUS SECUR32_CreateNTLMv1SessionKey(PBYTE password, int len, PBYTE se
arc4_info *SECUR32_arc4Alloc(void); arc4_info *SECUR32_arc4Alloc(void);
void SECUR32_arc4Init(arc4_info *a4i, const BYTE *key, unsigned int keyLen); void SECUR32_arc4Init(arc4_info *a4i, const BYTE *key, unsigned int keyLen);
void SECUR32_arc4Process(arc4_info *a4i, BYTE *inoutString, unsigned int length); void SECUR32_arc4Process(arc4_info *a4i, BYTE *inoutString, unsigned int length);
void SECUR32_arc4Cleanup(arc4_info *a4i);
/* NTLMSSP flags indicating the negotiated features */ /* NTLMSSP flags indicating the negotiated features */
#define NTLMSSP_NEGOTIATE_UNICODE 0x00000001 #define NTLMSSP_NEGOTIATE_UNICODE 0x00000001
......
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