From 8414777cba83c9f2f4290a134224199b9b12da67 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 27 Apr 2006 20:53:19 +0900 Subject: [PATCH] secur32: Add partial support for ISC_REQ_ALLOCATE_MEMORY in the NTLM security provider. --- dlls/secur32/ntlm.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/dlls/secur32/ntlm.c b/dlls/secur32/ntlm.c index 5b5c2ee0a56..6cd34c9cbf2 100644 --- a/dlls/secur32/ntlm.c +++ b/dlls/secur32/ntlm.c @@ -436,10 +436,6 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW( TRACE("According to a MS whitepaper pszTargetName is ignored.\n"); } /* Handle all the flags */ - if(fContextReq & ISC_REQ_ALLOCATE_MEMORY) - { - FIXME("InitializeSecurityContext(): ISC_REQ_ALLOCATE_MEMORY stub\n"); - } if(fContextReq & ISC_REQ_CONFIDENTIALITY) { FIXME("InitializeSecurityContext(): ISC_REQ_CONFIDENTIALITY stub\n"); @@ -547,6 +543,16 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW( /* put the decoded client blob into the out buffer */ + if (fContextReq & ISC_REQ_ALLOCATE_MEMORY) + { + if (pOutput) + { + pOutput->cBuffers = 1; + pOutput->pBuffers[0].pvBuffer = SECUR32_ALLOC(bin_len); + pOutput->pBuffers[0].cbBuffer = bin_len; + } + } + if (!pOutput || !pOutput->cBuffers || pOutput->pBuffers[0].cbBuffer < bin_len) { TRACE("out buffer is NULL or has not enough space\n"); @@ -643,6 +649,16 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW( /* put the decoded client blob into the out buffer */ + if (fContextReq & ISC_REQ_ALLOCATE_MEMORY) + { + if (pOutput) + { + pOutput->cBuffers = 1; + pOutput->pBuffers[0].pvBuffer = SECUR32_ALLOC(bin_len); + pOutput->pBuffers[0].cbBuffer = bin_len; + } + } + if (!pOutput || !pOutput->cBuffers || pOutput->pBuffers[0].cbBuffer < bin_len) { TRACE("out buffer is NULL or has not enough space\n");