Module: wine Branch: refs/heads/master Commit: 8414777cba83c9f2f4290a134224199b9b12da67 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=8414777cba83c9f2f4290a13...
Author: Dmitry Timoshkov dmitry@codeweavers.com Date: Thu Apr 27 20:53:19 2006 +0900
secur32: Add partial support for ISC_REQ_ALLOCATE_MEMORY in the NTLM security provider.
---
dlls/secur32/ntlm.c | 24 ++++++++++++++++++++---- 1 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/dlls/secur32/ntlm.c b/dlls/secur32/ntlm.c index 5b5c2ee..6cd34c9 100644 --- a/dlls/secur32/ntlm.c +++ b/dlls/secur32/ntlm.c @@ -436,10 +436,6 @@ static SECURITY_STATUS SEC_ENTRY ntlm_In 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_In
/* 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_In
/* 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");