Jacek Caban : rpcrt4: Forward RpcServerRegisterAuthInfoA to RpcServerRegisterAuthInfoW.

Alexandre Julliard julliard at winehq.org
Sun Jul 3 12:18:29 CDT 2016


Module: wine
Branch: master
Commit: a7b1e61fa6075c38f45072b8a28beb03672cdc17
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a7b1e61fa6075c38f45072b8a28beb03672cdc17

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Jun 27 17:08:14 2016 +0200

rpcrt4: Forward RpcServerRegisterAuthInfoA to RpcServerRegisterAuthInfoW.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/rpcrt4/rpc_server.c | 57 +++++-------------------------------------------
 1 file changed, 6 insertions(+), 51 deletions(-)

diff --git a/dlls/rpcrt4/rpc_server.c b/dlls/rpcrt4/rpc_server.c
index 809ecef..4210258 100644
--- a/dlls/rpcrt4/rpc_server.c
+++ b/dlls/rpcrt4/rpc_server.c
@@ -1358,63 +1358,18 @@ void RPCRT4_ServerFreeAllRegisteredAuthInfo(void)
 RPC_STATUS WINAPI RpcServerRegisterAuthInfoA( RPC_CSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
                             LPVOID Arg )
 {
-    SECURITY_STATUS sec_status;
-    CredHandle cred;
-    TimeStamp exp;
-    ULONG package_count;
-    ULONG i;
-    PSecPkgInfoA packages;
-    ULONG max_token;
-    struct rpc_server_registered_auth_info *auth_info;
+    WCHAR *principal_name = NULL;
+    RPC_STATUS status;
 
     TRACE("(%s,%u,%p,%p)\n", ServerPrincName, AuthnSvc, GetKeyFn, Arg);
 
-    sec_status = EnumerateSecurityPackagesA(&package_count, &packages);
-    if (sec_status != SEC_E_OK)
-    {
-        ERR("EnumerateSecurityPackagesA failed with error 0x%08x\n",
-            sec_status);
-        return RPC_S_SEC_PKG_ERROR;
-    }
-
-    for (i = 0; i < package_count; i++)
-        if (packages[i].wRPCID == AuthnSvc)
-            break;
-
-    if (i == package_count)
-    {
-        WARN("unsupported AuthnSvc %u\n", AuthnSvc);
-        FreeContextBuffer(packages);
-        return RPC_S_UNKNOWN_AUTHN_SERVICE;
-    }
-    TRACE("found package %s for service %u\n", packages[i].Name,
-          AuthnSvc);
-    sec_status = AcquireCredentialsHandleA((SEC_CHAR *)ServerPrincName,
-                                           packages[i].Name,
-                                           SECPKG_CRED_INBOUND, NULL, NULL,
-                                           NULL, NULL, &cred, &exp);
-    max_token = packages[i].cbMaxToken;
-    FreeContextBuffer(packages);
-    if (sec_status != SEC_E_OK)
-        return RPC_S_SEC_PKG_ERROR;
-
-    auth_info = HeapAlloc(GetProcessHeap(), 0, sizeof(*auth_info));
-    if (!auth_info)
-    {
-        FreeCredentialsHandle(&cred);
+    if(ServerPrincName && !(principal_name = RPCRT4_strdupAtoW((const char*)ServerPrincName)))
         return RPC_S_OUT_OF_RESOURCES;
-    }
-
-    auth_info->exp = exp;
-    auth_info->cred = cred;
-    auth_info->max_token = max_token;
-    auth_info->auth_type = AuthnSvc;
 
-    EnterCriticalSection(&server_auth_info_cs);
-    list_add_tail(&server_registered_auth_info, &auth_info->entry);
-    LeaveCriticalSection(&server_auth_info_cs);
+    status = RpcServerRegisterAuthInfoW(principal_name, AuthnSvc, GetKeyFn, Arg);
 
-    return RPC_S_OK;
+    HeapFree(GetProcessHeap(), 0, principal_name);
+    return status;
 }
 
 /***********************************************************************




More information about the wine-cvs mailing list