From 1e3186c6c74b1e8ec6c140eee59815d492a32335 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 20 Aug 2013 12:54:06 +0200 Subject: [PATCH] rpcrt4: Include authentication schemes in the quality of service match. --- dlls/rpcrt4/rpc_binding.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/rpcrt4/rpc_binding.c b/dlls/rpcrt4/rpc_binding.c index e575e658786..161420d6af8 100644 --- a/dlls/rpcrt4/rpc_binding.c +++ b/dlls/rpcrt4/rpc_binding.c @@ -1414,7 +1414,18 @@ BOOL RpcQualityOfService_IsEqual(const RpcQualityOfService *qos1, const RpcQuali if (http_credentials1->AuthenticationTarget != http_credentials2->AuthenticationTarget) return FALSE; - /* authentication schemes and server certificate subject not currently used */ + if (http_credentials1->NumberOfAuthnSchemes != http_credentials2->NumberOfAuthnSchemes) + return FALSE; + + if ((!http_credentials1->AuthnSchemes && http_credentials2->AuthnSchemes) || + (http_credentials1->AuthnSchemes && !http_credentials2->AuthnSchemes)) + return FALSE; + + if (memcmp(http_credentials1->AuthnSchemes, http_credentials2->AuthnSchemes, + http_credentials1->NumberOfAuthnSchemes * sizeof(http_credentials1->AuthnSchemes[0]))) + return FALSE; + + /* server certificate subject not currently used */ if (http_credentials1->TransportCredentials != http_credentials2->TransportCredentials) {