[PATCH 7/13] rpcrt4: Call CompleteAuthToken if
InitializeSecurityContext
returned a code that says it should be called.
Robert Shearman
rob at codeweavers.com
Mon Mar 26 12:18:01 CDT 2007
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(-)
-------------- next part --------------
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
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-patches
mailing list