X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdll%2Fwin32%2Fadvapi32%2Fsec%2Flsa.c;h=6cc870147fd0ae3e3c84f33245a2cb0a3ee1c5df;hp=f792f8c7d292f3401e461144f825ed845f919d4a;hb=e2214c16efe1112cb986f3939c8d1bffc768966b;hpb=5786bc7b81f1c9ce07d879f369092b42ed034800;ds=sidebyside diff --git a/reactos/dll/win32/advapi32/sec/lsa.c b/reactos/dll/win32/advapi32/sec/lsa.c index f792f8c7d29..6cc870147fd 100644 --- a/reactos/dll/win32/advapi32/sec/lsa.c +++ b/reactos/dll/win32/advapi32/sec/lsa.c @@ -217,7 +217,7 @@ LsaDeleteTrustedDomain( } /* - * @unimplemented + * @implemented */ NTSTATUS WINAPI @@ -227,10 +227,35 @@ LsaEnumerateAccountRights( PLSA_UNICODE_STRING *UserRights, PULONG CountOfRights) { - FIXME("(%p,%p,%p,%p) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights); - *UserRights = 0; - *CountOfRights = 0; - return STATUS_OBJECT_NAME_NOT_FOUND; + LSAPR_USER_RIGHT_SET UserRightsSet; + NTSTATUS Status; + + TRACE("(%p,%p,%p,%p) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights); + + UserRightsSet.Entries = 0; + UserRightsSet.UserRights = NULL; + + RpcTryExcept + { + Status = LsarEnmuerateAccountRights((LSAPR_HANDLE)PolicyHandle, + AccountSid, + &UserRightsSet); + + *CountOfRights = UserRightsSet.Entries; + *UserRights = (PUNICODE_STRING)UserRightsSet.UserRights; + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + Status = I_RpcMapWin32Status(RpcExceptionCode()); + + if (UserRightsSet.UserRights != NULL) + { + MIDL_user_free(UserRightsSet.UserRights); + } + } + RpcEndExcept; + + return Status; } /* @@ -288,7 +313,8 @@ LsaEnumerateTrustedDomainsEx( /* * @implemented */ -NTSTATUS WINAPI +NTSTATUS +WINAPI LsaFreeMemory(PVOID Buffer) { TRACE("(%p)\n", Buffer);