mirror of
https://abf.rosa.ru/djam/samba.git
synced 2025-02-24 01:22:47 +00:00
67 lines
3 KiB
Diff
67 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 -ruN samba-4.12.0_orig/python/samba/dbchecker.py samba-4.12.0/python/samba/dbchecker.py
|
|
--- samba-4.12.0_orig/python/samba/dbchecker.py 2020-01-31 18:25:36.000000000 +0800
|
|
+++ samba-4.12.0/python/samba/dbchecker.py 2020-03-19 15:08:15.433649691 +0800
|
|
@@ -114,10 +114,17 @@
|
|
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)
|
|
@@ -192,7 +199,9 @@
|
|
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
|
|
@@ -2519,8 +2528,9 @@
|
|
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
|