mirror of
https://abf.rosa.ru/djam/samba.git
synced 2025-02-24 09:32:49 +00:00
69 lines
3 KiB
Diff
69 lines
3 KiB
Diff
From 63cf6814016d4a68a49773b1cf282bc78f42d5ba Mon Sep 17 00:00:00 2001
|
|
From: Andrew Bartlett <abartlet@samba.org>
|
|
Date: Mon, 11 Mar 2019 13:29:40 +1300
|
|
Subject: [PATCH 1/2] samba-tool dbcheck: Avoid creating child DNs via ldb.Dn()
|
|
format arguments
|
|
|
|
If we call dn.add_base() we avoid a problematic round-trip via the linearized DN.
|
|
|
|
This has been particularly a problem in the python bindings, while now resolved, as strings
|
|
are different between Python2 and Python3.
|
|
|
|
[ mikhailnov: rediffed for v4.10.8 ]
|
|
|
|
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
|
|
Signed-off-by: Mikhail Novosyolov <m.novosyolov@rosalinux.ru>
|
|
---
|
|
python/samba/dbchecker.py | 20 +++++++++++++++-----
|
|
1 file changed, 15 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/python/samba/dbchecker.py b/python/samba/dbchecker.py
|
|
index 3677564fea0..ffda828a522 100644
|
|
--- a/python/samba/dbchecker.py
|
|
+++ b/python/samba/dbchecker.py
|
|
@@ -112,10 +112,17 @@ class dbcheck(object):
|
|
self.expired_tombstones = 0
|
|
self.reset_all_well_known_acls = False
|
|
self.in_transaction = in_transaction
|
|
- self.infrastructure_dn = ldb.Dn(samdb, "CN=Infrastructure," + samdb.domain_dn())
|
|
- self.naming_dn = ldb.Dn(samdb, "CN=Partitions,%s" % samdb.get_config_basedn())
|
|
+
|
|
+ self.infrastructure_dn = ldb.Dn(samdb, "CN=Infrastructure")
|
|
+ self.infrastructure_dn.add_base(samdb.domain_dn())
|
|
+
|
|
+ self.naming_dn = ldb.Dn(samdb, "CN=Partitions")
|
|
+ self.naming_dn.add_base(samdb.get_config_basedn())
|
|
+
|
|
self.schema_dn = samdb.get_schema_basedn()
|
|
- self.rid_dn = ldb.Dn(samdb, "CN=RID Manager$,CN=System," + samdb.domain_dn())
|
|
+ self.rid_dn = ldb.Dn(samdb, "CN=RID Manager$,CN=System")
|
|
+ self.rid_dn.add_base(samdb.domain_dn())
|
|
+
|
|
self.ntds_dsa = ldb.Dn(samdb, samdb.get_dsServiceName())
|
|
self.class_schemaIDGUID = {}
|
|
self.wellknown_sds = get_wellknown_sds(self.samdb)
|
|
@@ -190,7 +197,9 @@ class dbcheck(object):
|
|
if len(forest) == 1:
|
|
self.dns_partitions.append((ldb.Dn(self.samdb, domaindns_zone), forest[0]))
|
|
|
|
- fsmo_dn = ldb.Dn(self.samdb, "CN=RID Manager$,CN=System," + self.samdb.domain_dn())
|
|
+ fsmo_dn = ldb.Dn(self.samdb, "CN=RID Manager$,CN=System")
|
|
+ fsmo_dn.add_base(self.samdb.domain_dn())
|
|
+
|
|
rid_master = get_fsmo_roleowner(self.samdb, fsmo_dn, "rid")
|
|
if ldb.Dn(self.samdb, self.samdb.get_dsServiceName()) == rid_master:
|
|
self.is_rid_master = True
|
|
@@ -2509,8 +2518,9 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
|
|
controls += ["local_oid:%s:1" % dsdb.DSDB_CONTROL_DBCHECK_FIX_LINK_DN_NAME]
|
|
if parent_dn is None:
|
|
parent_dn = obj.dn.parent()
|
|
- expected_dn = ldb.Dn(self.samdb, "RDN=RDN,%s" % (parent_dn))
|
|
+ expected_dn = ldb.Dn(self.samdb, "RDN=RDN")
|
|
expected_dn.set_component(0, obj.dn.get_rdn_name(), name_val)
|
|
+ expected_dn.add_base(parent_dn)
|
|
|
|
if obj.dn == deleted_objects_dn:
|
|
expected_dn = obj.dn
|
|
--
|
|
2.20.1
|
|
|