Rob Shearman : rpcrt4:
Call CompleteAuthToken if InitializeSecurityContext returned a code
that says it should be called .
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Mar 27 06:58:46 CDT 2007
Module: wine
Branch: master
Commit: 88295b9a020c3fac092bb0c49837d63d18a15de2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=88295b9a020c3fac092bb0c49837d63d18a15de2
Author: Rob Shearman <rob at 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;
}
More information about the wine-cvs
mailing list