s4-s3-upgrade: Fix the minimum and maximum password age calculation
authorAmitay Isaacs <amitay@gmail.com>
Wed, 16 Nov 2011 01:59:52 +0000 (12:59 +1100)
committerAmitay Isaacs <amitay@gmail.com>
Fri, 18 Nov 2011 03:38:27 +0000 (14:38 +1100)
Windows sets maxPwdAge to -0x8000000000000000 when maximum password age
is set to 0 days.

source4/scripting/python/samba/upgrade.py

index c58364bcfe059475cc87c1b91fcb9b25b38c6b86..53f1206d21636d0ef93d6a32ba2bb26b72fc897e 100644 (file)
@@ -60,15 +60,15 @@ def import_sam_policy(samdb, policy, logger):
         ldb.FLAG_MOD_REPLACE, 'pwdHistoryLength')
 
     min_pw_age_unix = policy['minimum password age']
-    min_pw_age_nt = 0 - unix2nttime(min_pw_age_unix)
+    min_pw_age_nt = int(-min_pw_age_unix * (1e7 * 60 * 60 * 24))
     m['a03'] = ldb.MessageElement(str(min_pw_age_nt), ldb.FLAG_MOD_REPLACE,
         'minPwdAge')
 
     max_pw_age_unix = policy['maximum password age']
-    if (max_pw_age_unix == -1):
-        max_pw_age_nt = 0
+    if max_pw_age_unix == -1:
+        max_pw_age_nt = -0x8000000000000000
     else:
-        max_pw_age_nt = unix2nttime(max_pw_age_unix)
+        max_pw_age_nt = int(-max_pw_age_unix * (1e7 * 60 * 60 * 24))
 
     m['a04'] = ldb.MessageElement(str(max_pw_age_nt), ldb.FLAG_MOD_REPLACE,
                                   'maxPwdAge')