https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c59ab8fce181f08f09271afb91fdb965afbf02b6

commit c59ab8fce181f08f09271afb91fdb965afbf02b6
Author:     Mark Jansen <[email protected]>
AuthorDate: Wed Mar 17 21:16:57 2021 +0100
Commit:     Mark Jansen <[email protected]>
CommitDate: Thu Mar 18 23:28:17 2021 +0100

    [SYSSETUP] SamQueryInformationDomain expects a pointer
---
 dll/win32/syssetup/security.c | 58 ++++++++++++++++++++++++-------------------
 1 file changed, 32 insertions(+), 26 deletions(-)

diff --git a/dll/win32/syssetup/security.c b/dll/win32/syssetup/security.c
index 47123e7286a..ffe73bbe336 100644
--- a/dll/win32/syssetup/security.c
+++ b/dll/win32/syssetup/security.c
@@ -766,7 +766,7 @@ ApplyPasswordSettings(
     _In_ PWSTR pszSectionName)
 {
     INFCONTEXT InfContext;
-    DOMAIN_PASSWORD_INFORMATION PasswordInfo;
+    PDOMAIN_PASSWORD_INFORMATION PasswordInfo = NULL;
     PPOLICY_ACCOUNT_DOMAIN_INFO OrigInfo = NULL;
     LSA_OBJECT_ATTRIBUTES ObjectAttributes;
     LSA_HANDLE PolicyHandle = NULL;
@@ -828,7 +828,7 @@ ApplyPasswordSettings(
         goto done;
     }
 
-    DPRINT("MaximumPasswordAge (OldValue) : 0x%I64x\n", 
PasswordInfo.MaxPasswordAge.QuadPart);
+    DPRINT("MaximumPasswordAge (OldValue) : 0x%I64x\n", 
PasswordInfo->MaxPasswordAge.QuadPart);
     if (SetupFindFirstLineW(hSecurityInf,
                             pszSectionName,
                             L"MaximumPasswordAge",
@@ -839,17 +839,17 @@ ApplyPasswordSettings(
             DPRINT("Value: %ld\n", nValue);
             if (nValue == -1)
             {
-                PasswordInfo.MaxPasswordAge.QuadPart = 0x8000000000000000;
+                PasswordInfo->MaxPasswordAge.QuadPart = 0x8000000000000000;
             }
             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,
                             pszSectionName,
                             L"MinimumPasswordAge",
@@ -860,14 +860,14 @@ ApplyPasswordSettings(
             DPRINT("Wert: %ld\n", nValue);
             if ((nValue >= 0) && (nValue < 1000))
             {
-                if (PasswordInfo.MaxPasswordAge.QuadPart < (LONGLONG)nValue * 
TICKS_PER_DAY)
-                    PasswordInfo.MinPasswordAge.QuadPart = (LONGLONG)nValue * 
TICKS_PER_DAY;
+                if (PasswordInfo->MaxPasswordAge.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,
                             pszSectionName,
                             L"MinimumPasswordLength",
@@ -878,13 +878,13 @@ ApplyPasswordSettings(
             DPRINT("Value: %ld\n", nValue);
             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,
                             pszSectionName,
                             L"PasswordHistorySize",
@@ -895,9 +895,9 @@ ApplyPasswordSettings(
             DPRINT("Value: %ld\n", nValue);
             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)
             {
-                PasswordInfo.PasswordProperties &= ~DOMAIN_PASSWORD_COMPLEX;
+                PasswordInfo->PasswordProperties &= ~DOMAIN_PASSWORD_COMPLEX;
             }
             else
             {
-                PasswordInfo.PasswordProperties |= DOMAIN_PASSWORD_COMPLEX;
+                PasswordInfo->PasswordProperties |= DOMAIN_PASSWORD_COMPLEX;
             }
         }
     }
@@ -928,11 +928,11 @@ ApplyPasswordSettings(
         {
             if (nValue == 0)
             {
-                PasswordInfo.PasswordProperties &= 
~DOMAIN_PASSWORD_STORE_CLEARTEXT;
+                PasswordInfo->PasswordProperties &= 
~DOMAIN_PASSWORD_STORE_CLEARTEXT;
             }
             else
             {
-                PasswordInfo.PasswordProperties |= 
DOMAIN_PASSWORD_STORE_CLEARTEXT;
+                PasswordInfo->PasswordProperties |= 
DOMAIN_PASSWORD_STORE_CLEARTEXT;
             }
         }
     }
@@ -941,7 +941,7 @@ ApplyPasswordSettings(
 
     Status = SamSetInformationDomain(DomainHandle,
                                      DomainPasswordInformation,
-                                     (PVOID*)&PasswordInfo);
+                                     PasswordInfo);
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("SamSetInformationDomain() failed (Status %08lx)\n", Status);
@@ -949,6 +949,9 @@ ApplyPasswordSettings(
     }
 
 done:
+    if (PasswordInfo != NULL)
+        SamFreeMemory(PasswordInfo);
+
     if (DomainHandle != NULL)
         SamCloseHandle(DomainHandle);
 
@@ -970,7 +973,7 @@ ApplyLockoutSettings(
     _In_ PWSTR pszSectionName)
 {
     INFCONTEXT InfContext;
-    DOMAIN_LOCKOUT_INFORMATION LockoutInfo;
+    PDOMAIN_LOCKOUT_INFORMATION LockoutInfo = NULL;
     PPOLICY_ACCOUNT_DOMAIN_INFO OrigInfo = NULL;
     LSA_OBJECT_ATTRIBUTES ObjectAttributes;
     LSA_HANDLE PolicyHandle = NULL;
@@ -1041,7 +1044,7 @@ ApplyLockoutSettings(
         {
             if (nValue >= 0)
             {
-                LockoutInfo.LockoutThreshold = nValue;
+                LockoutInfo->LockoutThreshold = nValue;
             }
         }
     }
@@ -1055,7 +1058,7 @@ ApplyLockoutSettings(
         {
             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)
             {
-                LockoutInfo.LockoutDuration.QuadPart = 0x8000000000000000LL;
+                LockoutInfo->LockoutDuration.QuadPart = 0x8000000000000000LL;
             }
             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,
                                      DomainLockoutInformation,
-                                     (PVOID*)&LockoutInfo);
+                                     LockoutInfo);
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("SamSetInformationDomain() failed (Status %08lx)\n", Status);
@@ -1088,6 +1091,9 @@ ApplyLockoutSettings(
     }
 
 done:
+    if (LockoutInfo != NULL)
+        SamFreeMemory(LockoutInfo);
+
     if (DomainHandle != NULL)
         SamCloseHandle(DomainHandle);
 

Reply via email to