s4-s3-upgrade: Check for duplicate sids before provisioning
authorAmitay Isaacs <amitay@gmail.com>
Mon, 12 Sep 2011 05:09:49 +0000 (15:09 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 12 Sep 2011 10:42:20 +0000 (20:42 +1000)
Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
source4/scripting/python/samba/upgrade.py

index ae9fdab4cb702d751eb2a0b59b810e88235e9071..98800196d99a379c9183e926eb0fc304b41b30bd 100644 (file)
@@ -602,6 +602,16 @@ Please fix this account before attempting to upgrade again
             logger.error("   %s" % name)
         raise ProvisioningError("Please remove common user/group names before upgrade.")
 
+    # Check for same user sid/group sid
+    group_sids = set(map(lambda g: str(g.sid), grouplist))
+    user_sids = set(map(lambda u: "%s-%u" % (domainsid, u['rid']), userlist))
+    common_sids = group_sids.intersection(user_sids)
+    if common_sids:
+        logger.error("Following sids are both user and group sids:")
+        for sid in common_sids:
+            logger.error("   %s" % str(sid))
+        raise ProvisioningError("Please remove duplicate sid entries before upgrade.")
+
     # Do full provision
     result = provision(logger, session_info, None,
                        targetdir=targetdir, realm=realm, domain=domainname,