[SYSSETUP] SamQueryInformationDomain expects a pointer

This commit is contained in:
Mark Jansen 2021-03-17 21:16:57 +01:00
parent aec3d9cc8f
commit c59ab8fce1

View file

@ -766,7 +766,7 @@ ApplyPasswordSettings(
_In_ PWSTR pszSectionName) _In_ PWSTR pszSectionName)
{ {
INFCONTEXT InfContext; INFCONTEXT InfContext;
DOMAIN_PASSWORD_INFORMATION PasswordInfo; PDOMAIN_PASSWORD_INFORMATION PasswordInfo = NULL;
PPOLICY_ACCOUNT_DOMAIN_INFO OrigInfo = NULL; PPOLICY_ACCOUNT_DOMAIN_INFO OrigInfo = NULL;
LSA_OBJECT_ATTRIBUTES ObjectAttributes; LSA_OBJECT_ATTRIBUTES ObjectAttributes;
LSA_HANDLE PolicyHandle = NULL; LSA_HANDLE PolicyHandle = NULL;
@ -828,7 +828,7 @@ ApplyPasswordSettings(
goto done; goto done;
} }
DPRINT("MaximumPasswordAge (OldValue) : 0x%I64x\n", PasswordInfo.MaxPasswordAge.QuadPart); DPRINT("MaximumPasswordAge (OldValue) : 0x%I64x\n", PasswordInfo->MaxPasswordAge.QuadPart);
if (SetupFindFirstLineW(hSecurityInf, if (SetupFindFirstLineW(hSecurityInf,
pszSectionName, pszSectionName,
L"MaximumPasswordAge", L"MaximumPasswordAge",
@ -839,17 +839,17 @@ ApplyPasswordSettings(
DPRINT("Value: %ld\n", nValue); DPRINT("Value: %ld\n", nValue);
if (nValue == -1) if (nValue == -1)
{ {
PasswordInfo.MaxPasswordAge.QuadPart = 0x8000000000000000; PasswordInfo->MaxPasswordAge.QuadPart = 0x8000000000000000;
} }
else if ((nValue >= 1) && (nValue < 1000)) else if ((nValue >= 1) && (nValue < 1000))
{ {
PasswordInfo.MaxPasswordAge.QuadPart = (LONGLONG)nValue * TICKS_PER_DAY; PasswordInfo->MaxPasswordAge.QuadPart = (LONGLONG)nValue * TICKS_PER_DAY;
} }
DPRINT("MaximumPasswordAge (NewValue) : 0x%I64x\n", PasswordInfo.MaxPasswordAge.QuadPart); DPRINT("MaximumPasswordAge (NewValue) : 0x%I64x\n", PasswordInfo->MaxPasswordAge.QuadPart);
} }
} }
DPRINT("MinimumPasswordAge (OldValue) : 0x%I64x\n", PasswordInfo.MinPasswordAge.QuadPart); DPRINT("MinimumPasswordAge (OldValue) : 0x%I64x\n", PasswordInfo->MinPasswordAge.QuadPart);
if (SetupFindFirstLineW(hSecurityInf, if (SetupFindFirstLineW(hSecurityInf,
pszSectionName, pszSectionName,
L"MinimumPasswordAge", L"MinimumPasswordAge",
@ -860,14 +860,14 @@ ApplyPasswordSettings(
DPRINT("Wert: %ld\n", nValue); DPRINT("Wert: %ld\n", nValue);
if ((nValue >= 0) && (nValue < 1000)) if ((nValue >= 0) && (nValue < 1000))
{ {
if (PasswordInfo.MaxPasswordAge.QuadPart < (LONGLONG)nValue * TICKS_PER_DAY) if (PasswordInfo->MaxPasswordAge.QuadPart < (LONGLONG)nValue * TICKS_PER_DAY)
PasswordInfo.MinPasswordAge.QuadPart = (LONGLONG)nValue * TICKS_PER_DAY; PasswordInfo->MinPasswordAge.QuadPart = (LONGLONG)nValue * TICKS_PER_DAY;
} }
DPRINT("MinimumPasswordAge (NewValue) : 0x%I64x\n", PasswordInfo.MinPasswordAge.QuadPart); DPRINT("MinimumPasswordAge (NewValue) : 0x%I64x\n", PasswordInfo->MinPasswordAge.QuadPart);
} }
} }
DPRINT("MinimumPasswordLength (OldValue) : %lu\n", PasswordInfo.MinPasswordLength); DPRINT("MinimumPasswordLength (OldValue) : %lu\n", PasswordInfo->MinPasswordLength);
if (SetupFindFirstLineW(hSecurityInf, if (SetupFindFirstLineW(hSecurityInf,
pszSectionName, pszSectionName,
L"MinimumPasswordLength", L"MinimumPasswordLength",
@ -878,13 +878,13 @@ ApplyPasswordSettings(
DPRINT("Value: %ld\n", nValue); DPRINT("Value: %ld\n", nValue);
if ((nValue >= 0) && (nValue <= 65535)) if ((nValue >= 0) && (nValue <= 65535))
{ {
PasswordInfo.MinPasswordLength = nValue; PasswordInfo->MinPasswordLength = nValue;
} }
DPRINT("MinimumPasswordLength (NewValue) : %lu\n", PasswordInfo.MinPasswordLength); DPRINT("MinimumPasswordLength (NewValue) : %lu\n", PasswordInfo->MinPasswordLength);
} }
} }
DPRINT("PasswordHistoryLength (OldValue) : %lu\n", PasswordInfo.PasswordHistoryLength); DPRINT("PasswordHistoryLength (OldValue) : %lu\n", PasswordInfo->PasswordHistoryLength);
if (SetupFindFirstLineW(hSecurityInf, if (SetupFindFirstLineW(hSecurityInf,
pszSectionName, pszSectionName,
L"PasswordHistorySize", L"PasswordHistorySize",
@ -895,9 +895,9 @@ ApplyPasswordSettings(
DPRINT("Value: %ld\n", nValue); DPRINT("Value: %ld\n", nValue);
if ((nValue >= 0) && (nValue <= 65535)) if ((nValue >= 0) && (nValue <= 65535))
{ {
PasswordInfo.PasswordHistoryLength = nValue; PasswordInfo->PasswordHistoryLength = nValue;
} }
DPRINT("PasswordHistoryLength (NewValue) : %lu\n", PasswordInfo.PasswordHistoryLength); DPRINT("PasswordHistoryLength (NewValue) : %lu\n", PasswordInfo->PasswordHistoryLength);
} }
} }
@ -910,11 +910,11 @@ ApplyPasswordSettings(
{ {
if (nValue == 0) if (nValue == 0)
{ {
PasswordInfo.PasswordProperties &= ~DOMAIN_PASSWORD_COMPLEX; PasswordInfo->PasswordProperties &= ~DOMAIN_PASSWORD_COMPLEX;
} }
else else
{ {
PasswordInfo.PasswordProperties |= DOMAIN_PASSWORD_COMPLEX; PasswordInfo->PasswordProperties |= DOMAIN_PASSWORD_COMPLEX;
} }
} }
} }
@ -928,11 +928,11 @@ ApplyPasswordSettings(
{ {
if (nValue == 0) if (nValue == 0)
{ {
PasswordInfo.PasswordProperties &= ~DOMAIN_PASSWORD_STORE_CLEARTEXT; PasswordInfo->PasswordProperties &= ~DOMAIN_PASSWORD_STORE_CLEARTEXT;
} }
else else
{ {
PasswordInfo.PasswordProperties |= DOMAIN_PASSWORD_STORE_CLEARTEXT; PasswordInfo->PasswordProperties |= DOMAIN_PASSWORD_STORE_CLEARTEXT;
} }
} }
} }
@ -941,7 +941,7 @@ ApplyPasswordSettings(
Status = SamSetInformationDomain(DomainHandle, Status = SamSetInformationDomain(DomainHandle,
DomainPasswordInformation, DomainPasswordInformation,
(PVOID*)&PasswordInfo); PasswordInfo);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
DPRINT1("SamSetInformationDomain() failed (Status %08lx)\n", Status); DPRINT1("SamSetInformationDomain() failed (Status %08lx)\n", Status);
@ -949,6 +949,9 @@ ApplyPasswordSettings(
} }
done: done:
if (PasswordInfo != NULL)
SamFreeMemory(PasswordInfo);
if (DomainHandle != NULL) if (DomainHandle != NULL)
SamCloseHandle(DomainHandle); SamCloseHandle(DomainHandle);
@ -970,7 +973,7 @@ ApplyLockoutSettings(
_In_ PWSTR pszSectionName) _In_ PWSTR pszSectionName)
{ {
INFCONTEXT InfContext; INFCONTEXT InfContext;
DOMAIN_LOCKOUT_INFORMATION LockoutInfo; PDOMAIN_LOCKOUT_INFORMATION LockoutInfo = NULL;
PPOLICY_ACCOUNT_DOMAIN_INFO OrigInfo = NULL; PPOLICY_ACCOUNT_DOMAIN_INFO OrigInfo = NULL;
LSA_OBJECT_ATTRIBUTES ObjectAttributes; LSA_OBJECT_ATTRIBUTES ObjectAttributes;
LSA_HANDLE PolicyHandle = NULL; LSA_HANDLE PolicyHandle = NULL;
@ -1041,7 +1044,7 @@ ApplyLockoutSettings(
{ {
if (nValue >= 0) if (nValue >= 0)
{ {
LockoutInfo.LockoutThreshold = nValue; LockoutInfo->LockoutThreshold = nValue;
} }
} }
} }
@ -1055,7 +1058,7 @@ ApplyLockoutSettings(
{ {
if (nValue >= 0) if (nValue >= 0)
{ {
LockoutInfo.LockoutObservationWindow.QuadPart = (LONGLONG)nValue * TICKS_PER_MINUTE; LockoutInfo->LockoutObservationWindow.QuadPart = (LONGLONG)nValue * TICKS_PER_MINUTE;
} }
} }
} }
@ -1069,18 +1072,18 @@ ApplyLockoutSettings(
{ {
if (nValue == -1) if (nValue == -1)
{ {
LockoutInfo.LockoutDuration.QuadPart = 0x8000000000000000LL; LockoutInfo->LockoutDuration.QuadPart = 0x8000000000000000LL;
} }
else if ((nValue >= 0) && (nValue < 100000)) else if ((nValue >= 0) && (nValue < 100000))
{ {
LockoutInfo.LockoutDuration.QuadPart = (LONGLONG)nValue * TICKS_PER_MINUTE; LockoutInfo->LockoutDuration.QuadPart = (LONGLONG)nValue * TICKS_PER_MINUTE;
} }
} }
} }
Status = SamSetInformationDomain(DomainHandle, Status = SamSetInformationDomain(DomainHandle,
DomainLockoutInformation, DomainLockoutInformation,
(PVOID*)&LockoutInfo); LockoutInfo);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
DPRINT1("SamSetInformationDomain() failed (Status %08lx)\n", Status); DPRINT1("SamSetInformationDomain() failed (Status %08lx)\n", Status);
@ -1088,6 +1091,9 @@ ApplyLockoutSettings(
} }
done: done:
if (LockoutInfo != NULL)
SamFreeMemory(LockoutInfo);
if (DomainHandle != NULL) if (DomainHandle != NULL)
SamCloseHandle(DomainHandle); SamCloseHandle(DomainHandle);