Module: wine Branch: master Commit: 88295b9a020c3fac092bb0c49837d63d18a15de2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=88295b9a020c3fac092bb0c498...
Author: Rob Shearman rob@codeweavers.com Date: Mon Mar 26 18:18:01 2007 +0100
rpcrt4: Call CompleteAuthToken if InitializeSecurityContext returned a code that says it should be called.
Currently, the only security provider that requires this is the Digest one, which we don't really care about, but is supported for completeness.
---
dlls/rpcrt4/rpc_message.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/dlls/rpcrt4/rpc_message.c b/dlls/rpcrt4/rpc_message.c index b100431..2519cee 100644 --- a/dlls/rpcrt4/rpc_message.c +++ b/dlls/rpcrt4/rpc_message.c @@ -501,7 +501,22 @@ static RPC_STATUS RPCRT4_ClientAuthorize(RpcConnection *conn, SecBuffer *in, return ERROR_ACCESS_DENIED; /* FIXME: is this correct? */ }
- TRACE("r = 0x%08x, cbBuffer = %ld, attr = 0x%08x\n", r, out->cbBuffer, conn->attr); + TRACE("r = 0x%08x, attr = 0x%08x\n", r, conn->attr); + + if ((r == SEC_I_COMPLETE_NEEDED) || (r == SEC_I_COMPLETE_AND_CONTINUE)) + { + TRACE("complete needed\n"); + r = CompleteAuthToken(&conn->ctx, &out_desc); + if (FAILED(r)) + { + HeapFree(GetProcessHeap(), 0, out->pvBuffer); + out->pvBuffer = NULL; + WARN("CompleteAuthToken failed with error 0x%08x\n", r); + return ERROR_ACCESS_DENIED; /* FIXME: is this correct? */ + } + } + + TRACE("cbBuffer = %ld\n", out->cbBuffer);
return RPC_S_OK; }