Dmitry Timoshkov : advapi32: Use GetWindowsAccountDomainSid() to retrieve the domain SID.
Alexandre Julliard
julliard at winehq.org
Fri Mar 2 12:16:45 CST 2018
Module: wine
Branch: master
Commit: a3bcaca48dd694a2c9d610730df0326780ca27df
URL: https://source.winehq.org/git/wine.git/?a=commit;h=a3bcaca48dd694a2c9d610730df0326780ca27df
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Fri Mar 2 18:44:17 2018 +0800
advapi32: Use GetWindowsAccountDomainSid() to retrieve the domain SID.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/advapi32/lsa.c | 23 ++++++++++++++++-------
include/winbase.h | 1 +
2 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 6f51f9d..f2fcc07 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -763,16 +763,24 @@ NTSTATUS WINAPI LsaQueryInformationPolicy(
break;
case PolicyDnsDomainInformation: /* 12 (0xc) */
{
- struct di
+ struct
{
POLICY_DNS_DOMAIN_INFO info;
- SID sid;
+ struct
+ {
+ SID sid;
+ DWORD sid_subauthority[3];
+ } domain_sid;
WCHAR domain_name[MAX_COMPUTERNAME_LENGTH + 1];
WCHAR dns_domain_name[MAX_COMPUTERNAME_LENGTH + 1];
WCHAR dns_forest_name[MAX_COMPUTERNAME_LENGTH + 1];
- };
+ } *xdi;
+ struct
+ {
+ SID sid;
+ DWORD sid_subauthority[3];
+ } computer_sid;
DWORD dwSize;
- struct di *xdi;
xdi = heap_alloc_zero(sizeof(*xdi));
if (!xdi) return STATUS_NO_MEMORY;
@@ -788,10 +796,11 @@ NTSTATUS WINAPI LsaQueryInformationPolicy(
/* FIXME: also set DnsDomainName and DnsForestName */
- if (ADVAPI_GetComputerSid(&xdi->sid))
+ dwSize = sizeof(xdi->domain_sid);
+ if (ADVAPI_GetComputerSid(&computer_sid.sid) && GetWindowsAccountDomainSid(&computer_sid.sid, &xdi->domain_sid.sid, &dwSize))
{
- xdi->info.Sid = &xdi->sid;
- TRACE("setting SID to %s\n", debugstr_sid(&xdi->sid));
+ xdi->info.Sid = &xdi->domain_sid.sid;
+ TRACE("setting SID to %s\n", debugstr_sid(&xdi->domain_sid.sid));
}
*Buffer = xdi;
diff --git a/include/winbase.h b/include/winbase.h
index e47c87a..9c7908a 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -2245,6 +2245,7 @@ WINBASEAPI BOOL WINAPI GetVolumePathNameW(LPCWSTR,LPWSTR,DWORD);
WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR,LPSTR,DWORD,PDWORD);
WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR,LPWSTR,DWORD,PDWORD);
#define GetVolumePathNamesForVolumeName WINELIB_NAME_AW(GetVolumePathNamesForVolumeName)
+WINADVAPI BOOL WINAPI GetWindowsAccountDomainSid(PSID,PSID,DWORD*);
WINBASEAPI UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT);
WINBASEAPI UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT);
#define GetWindowsDirectory WINELIB_NAME_AW(GetWindowsDirectory)
More information about the wine-cvs
mailing list