Commit d54043c0 authored by Robert Reif's avatar Robert Reif Committed by Alexandre Julliard

netapi32: NetUserModalsGet bug fixes and cleanup.

parent ef1c8fd1
...@@ -618,10 +618,11 @@ NET_API_STATUS WINAPI NetUserModalsGet( ...@@ -618,10 +618,11 @@ NET_API_STATUS WINAPI NetUserModalsGet(
NTSTATUS ntStatus; NTSTATUS ntStatus;
PSID domainIdentifier = NULL; PSID domainIdentifier = NULL;
int domainNameLen; int domainNameLen;
ZeroMemory(&objectAttributes, sizeof(objectAttributes)); ZeroMemory(&objectAttributes, sizeof(objectAttributes));
objectAttributes.Length = sizeof(objectAttributes);
ntStatus = LsaOpenPolicy(NULL, &objectAttributes,
ntStatus = LsaOpenPolicy(NULL, &objectAttributes,
POLICY_VIEW_LOCAL_INFORMATION, POLICY_VIEW_LOCAL_INFORMATION,
&policyHandle); &policyHandle);
if (ntStatus != STATUS_SUCCESS) if (ntStatus != STATUS_SUCCESS)
...@@ -630,28 +631,29 @@ NET_API_STATUS WINAPI NetUserModalsGet( ...@@ -630,28 +631,29 @@ NET_API_STATUS WINAPI NetUserModalsGet(
LsaNtStatusToWinError(ntStatus)); LsaNtStatusToWinError(ntStatus));
return ntStatus; return ntStatus;
} }
ntStatus = LsaQueryInformationPolicy(policyHandle, ntStatus = LsaQueryInformationPolicy(policyHandle,
PolicyAccountDomainInformation, PolicyAccountDomainInformation,
(PVOID *)&domainInfo); (PVOID *)&domainInfo);
if (ntStatus != STATUS_SUCCESS) if (ntStatus != STATUS_SUCCESS)
{ {
WARN("LsaQueryInformationPolicy failed with NT status %lx\n", WARN("LsaQueryInformationPolicy failed with NT status %lx\n",
LsaNtStatusToWinError(ntStatus)); LsaNtStatusToWinError(ntStatus));
LsaClose(policyHandle);
return ntStatus; return ntStatus;
} }
domainIdentifier = domainInfo->DomainSid; domainIdentifier = domainInfo->DomainSid;
domainNameLen = lstrlenW(domainInfo->DomainName.Buffer) + 1; domainNameLen = lstrlenW(domainInfo->DomainName.Buffer) + 1;
LsaClose(policyHandle); LsaClose(policyHandle);
ntStatus = NetApiBufferAllocate(sizeof(USER_MODALS_INFO_2) + ntStatus = NetApiBufferAllocate(sizeof(USER_MODALS_INFO_2) +
GetLengthSid(domainIdentifier) + GetLengthSid(domainIdentifier) +
domainNameLen * sizeof(WCHAR), domainNameLen * sizeof(WCHAR),
(LPVOID *)pbuffer); (LPVOID *)pbuffer);
if (ntStatus != NERR_Success) if (ntStatus != NERR_Success)
{ {
WARN("NetApiBufferAllocate() failed\n"); WARN("NetApiBufferAllocate() failed\n");
LsaFreeMemory(domainInfo); LsaFreeMemory(domainInfo);
return ntStatus; return ntStatus;
...@@ -662,7 +664,7 @@ NET_API_STATUS WINAPI NetUserModalsGet( ...@@ -662,7 +664,7 @@ NET_API_STATUS WINAPI NetUserModalsGet(
sizeof(USER_MODALS_INFO_2)); sizeof(USER_MODALS_INFO_2));
umi->usrmod2_domain_name = (LPWSTR)(*pbuffer + umi->usrmod2_domain_name = (LPWSTR)(*pbuffer +
sizeof(USER_MODALS_INFO_2) + GetLengthSid(domainIdentifier)); sizeof(USER_MODALS_INFO_2) + GetLengthSid(domainIdentifier));
lstrcpynW(umi->usrmod2_domain_name, lstrcpynW(umi->usrmod2_domain_name,
domainInfo->DomainName.Buffer, domainInfo->DomainName.Buffer,
domainNameLen); domainNameLen);
...@@ -670,9 +672,9 @@ NET_API_STATUS WINAPI NetUserModalsGet( ...@@ -670,9 +672,9 @@ NET_API_STATUS WINAPI NetUserModalsGet(
domainIdentifier); domainIdentifier);
LsaFreeMemory(domainInfo); LsaFreeMemory(domainInfo);
break; break;
} }
case 3: case 3:
/* return lockout information */ /* return lockout information */
FIXME("level 3 not implemented!\n"); FIXME("level 3 not implemented!\n");
...@@ -683,6 +685,6 @@ NET_API_STATUS WINAPI NetUserModalsGet( ...@@ -683,6 +685,6 @@ NET_API_STATUS WINAPI NetUserModalsGet(
*pbuffer = NULL; *pbuffer = NULL;
return ERROR_INVALID_LEVEL; return ERROR_INVALID_LEVEL;
} }
return NERR_Success; return NERR_Success;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment