Commit 8414777c authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

secur32: Add partial support for ISC_REQ_ALLOCATE_MEMORY in the NTLM security provider.

parent d89a0382
...@@ -436,10 +436,6 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW( ...@@ -436,10 +436,6 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW(
TRACE("According to a MS whitepaper pszTargetName is ignored.\n"); TRACE("According to a MS whitepaper pszTargetName is ignored.\n");
} }
/* Handle all the flags */ /* Handle all the flags */
if(fContextReq & ISC_REQ_ALLOCATE_MEMORY)
{
FIXME("InitializeSecurityContext(): ISC_REQ_ALLOCATE_MEMORY stub\n");
}
if(fContextReq & ISC_REQ_CONFIDENTIALITY) if(fContextReq & ISC_REQ_CONFIDENTIALITY)
{ {
FIXME("InitializeSecurityContext(): ISC_REQ_CONFIDENTIALITY stub\n"); FIXME("InitializeSecurityContext(): ISC_REQ_CONFIDENTIALITY stub\n");
...@@ -547,6 +543,16 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW( ...@@ -547,6 +543,16 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW(
/* put the decoded client blob into the out buffer */ /* 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) if (!pOutput || !pOutput->cBuffers || pOutput->pBuffers[0].cbBuffer < bin_len)
{ {
TRACE("out buffer is NULL or has not enough space\n"); TRACE("out buffer is NULL or has not enough space\n");
...@@ -643,6 +649,16 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW( ...@@ -643,6 +649,16 @@ static SECURITY_STATUS SEC_ENTRY ntlm_InitializeSecurityContextW(
/* put the decoded client blob into the out buffer */ /* 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) if (!pOutput || !pOutput->cBuffers || pOutput->pBuffers[0].cbBuffer < bin_len)
{ {
TRACE("out buffer is NULL or has not enough space\n"); TRACE("out buffer is NULL or has not enough space\n");
......
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