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

commit c1421c410807708ed2037d613daee537b95e6099
Author:     Eric Kohl <[email protected]>
AuthorDate: Sun Jun 9 15:25:13 2019 +0200
Commit:     Eric Kohl <[email protected]>
CommitDate: Sun Jun 9 15:25:13 2019 +0200

    [NETAPI32] Ignore usriX_logon_hours and usriX_units_per_week if 
usriX_logon_hours is NULL.
---
 dll/win32/netapi32/user.c | 105 ++++++++++++++++++++++++++--------------------
 1 file changed, 60 insertions(+), 45 deletions(-)

diff --git a/dll/win32/netapi32/user.c b/dll/win32/netapi32/user.c
index 3569d98d1f..4e0c8b6533 100644
--- a/dll/win32/netapi32/user.c
+++ b/dll/win32/netapi32/user.c
@@ -1596,17 +1596,20 @@ SetUserInfo(SAM_HANDLE UserHandle,
 
             // usri2_max_storage ignored
 
-            if (UserInfo2->usri2_units_per_week > USHRT_MAX)
+            if (UserInfo2->usri2_logon_hours != NULL)
             {
-                if (parm_err != NULL)
-                    *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
-                ApiStatus = ERROR_INVALID_PARAMETER;
-                break;
-            }
+                if (UserInfo2->usri2_units_per_week > USHRT_MAX)
+                {
+                    if (parm_err != NULL)
+                        *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
+                    ApiStatus = ERROR_INVALID_PARAMETER;
+                    break;
+                }
 
-            UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo2->usri2_units_per_week;
-            UserAllInfo.LogonHours.LogonHours = UserInfo2->usri2_logon_hours;
-            UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+                UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo2->usri2_units_per_week;
+                UserAllInfo.LogonHours.LogonHours = 
UserInfo2->usri2_logon_hours;
+                UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+            }
 
             // usri2_bad_pw_count ignored
             // usri2_num_logons ignored
@@ -1707,17 +1710,20 @@ SetUserInfo(SAM_HANDLE UserHandle,
 
             // usri3_max_storage ignored
 
-            if (UserInfo3->usri3_units_per_week > USHRT_MAX)
+            if (UserInfo3->usri3_logon_hours != NULL)
             {
-                if (parm_err != NULL)
-                    *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
-                ApiStatus = ERROR_INVALID_PARAMETER;
-                break;
-            }
+                if (UserInfo3->usri3_units_per_week > USHRT_MAX)
+                {
+                    if (parm_err != NULL)
+                        *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
+                    ApiStatus = ERROR_INVALID_PARAMETER;
+                    break;
+                }
 
-            UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo3->usri3_units_per_week;
-            UserAllInfo.LogonHours.LogonHours = UserInfo3->usri3_logon_hours;
-            UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+                UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo3->usri3_units_per_week;
+                UserAllInfo.LogonHours.LogonHours = 
UserInfo3->usri3_logon_hours;
+                UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+            }
 
             // usri3_bad_pw_count ignored
             // usri3_num_logons ignored
@@ -1840,17 +1846,20 @@ SetUserInfo(SAM_HANDLE UserHandle,
 
             // usri4_max_storage ignored
 
-            if (UserInfo4->usri4_units_per_week > USHRT_MAX)
+            if (UserInfo4->usri4_logon_hours != NULL)
             {
-                if (parm_err != NULL)
-                    *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
-                ApiStatus = ERROR_INVALID_PARAMETER;
-                break;
-            }
+                if (UserInfo4->usri4_units_per_week > USHRT_MAX)
+                {
+                    if (parm_err != NULL)
+                        *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
+                    ApiStatus = ERROR_INVALID_PARAMETER;
+                    break;
+                }
 
-            UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo4->usri4_units_per_week;
-            UserAllInfo.LogonHours.LogonHours = UserInfo4->usri4_logon_hours;
-            UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+                UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo4->usri4_units_per_week;
+                UserAllInfo.LogonHours.LogonHours = 
UserInfo4->usri4_logon_hours;
+                UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+            }
 
             // usri4_bad_pw_count ignored
             // usri4_num_logons ignored
@@ -1970,17 +1979,20 @@ SetUserInfo(SAM_HANDLE UserHandle,
 
             // usri22_max_storage ignored
 
-            if (UserInfo22->usri22_units_per_week > USHRT_MAX)
+            if (UserInfo22->usri22_logon_hours != NULL)
             {
-                if (parm_err != NULL)
-                    *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
-                ApiStatus = ERROR_INVALID_PARAMETER;
-                break;
-            }
+                if (UserInfo22->usri22_units_per_week > USHRT_MAX)
+                {
+                    if (parm_err != NULL)
+                        *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
+                    ApiStatus = ERROR_INVALID_PARAMETER;
+                    break;
+                }
 
-            UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo22->usri22_units_per_week;
-            UserAllInfo.LogonHours.LogonHours = UserInfo22->usri22_logon_hours;
-            UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+                UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo22->usri22_units_per_week;
+                UserAllInfo.LogonHours.LogonHours = 
UserInfo22->usri22_logon_hours;
+                UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+            }
 
             // usri22_bad_pw_count ignored
             // usri22_num_logons ignored
@@ -2117,17 +2129,20 @@ SetUserInfo(SAM_HANDLE UserHandle,
         case 1020:
             UserInfo1020 = (PUSER_INFO_1020)UserInfo;
 
-            if (UserInfo1020->usri1020_units_per_week > USHRT_MAX)
+            if (UserInfo1020->usri1020_logon_hours != NULL)
             {
-                if (parm_err != NULL)
-                    *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
-                ApiStatus = ERROR_INVALID_PARAMETER;
-                break;
-            }
+                if (UserInfo1020->usri1020_units_per_week > USHRT_MAX)
+                {
+                    if (parm_err != NULL)
+                        *parm_err = USER_UNITS_PER_WEEK_PARMNUM;
+                    ApiStatus = ERROR_INVALID_PARAMETER;
+                    break;
+                }
 
-            UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo1020->usri1020_units_per_week;
-            UserAllInfo.LogonHours.LogonHours = 
UserInfo1020->usri1020_logon_hours;
-            UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+                UserAllInfo.LogonHours.UnitsPerWeek = 
UserInfo1020->usri1020_units_per_week;
+                UserAllInfo.LogonHours.LogonHours = 
UserInfo1020->usri1020_logon_hours;
+                UserAllInfo.WhichFields |= USER_ALL_LOGONHOURS;
+            }
             break;
 
         case 1024:

Reply via email to