]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
samba-tool: let 'domain level raise --domain-level' use the correct crossRef dn
authorStefan Metzmacher <metze@samba.org>
Wed, 21 Jun 2023 09:57:12 +0000 (11:57 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 21 Jun 2023 19:08:37 +0000 (19:08 +0000)
We should not rely on lp.get('workgroup')...

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/netcmd/domain/level.py

index 8b0e8014dba57dfb274c41a09a5dcc76fd8ba818..48701376f51c6c82a0e8663552ae205fc9600c6d 100644 (file)
@@ -76,6 +76,12 @@ class cmd_domain_level(Command):
                                   attrs=["msDS-Behavior-Version", "nTMixedDomain"])
         assert len(res_domain) == 1
 
+        res_domain_cross = samdb.search("CN=Partitions,%s" % samdb.get_config_basedn(),
+                                        scope=ldb.SCOPE_SUBTREE,
+                                        expression="(&(objectClass=crossRef)(nCName=%s))" % domain_dn,
+                                        attrs=["msDS-Behavior-Version"])
+        assert len(res_domain_cross) == 1
+
         res_dc_s = samdb.search("CN=Sites,%s" % samdb.get_config_basedn(),
                                 scope=ldb.SCOPE_SUBTREE, expression="(objectClass=nTDSDSA)",
                                 attrs=["msDS-Behavior-Version"])
@@ -157,7 +163,7 @@ class cmd_domain_level(Command):
                     samdb.modify(m)
                     # Under partitions
                     m = ldb.Message()
-                    m.dn = ldb.Dn(samdb, "CN=" + lp.get("workgroup") + ",CN=Partitions,%s" % samdb.get_config_basedn())
+                    m.dn = res_domain_cross[0].dn
                     m["nTMixedDomain"] = ldb.MessageElement("0",
                                                             ldb.FLAG_MOD_REPLACE, "nTMixedDomain")
                     try:
@@ -176,8 +182,7 @@ class cmd_domain_level(Command):
                 samdb.modify(m)
                 # Under partitions
                 m = ldb.Message()
-                m.dn = ldb.Dn(samdb, "CN=" + lp.get("workgroup")
-                              + ",CN=Partitions,%s" % samdb.get_config_basedn())
+                m.dn = res_domain_cross[0].dn
                 m["msDS-Behavior-Version"] = ldb.MessageElement(
                     str(new_level_domain), ldb.FLAG_MOD_REPLACE,
                     "msDS-Behavior-Version")