mirror of
https://abf.rosa.ru/djam/samba.git
synced 2025-02-23 17:12:48 +00:00
Pick fix of RB#10068, upstream samba bug 14097 (samba-tool dbcheck)
This commit is contained in:
parent
128a0ba7cd
commit
1e00c785ef
3 changed files with 129 additions and 1 deletions
|
@ -0,0 +1,69 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
From ea0d7ff3ae64d7eb7608b830920f3b5088b01925 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Bartlett <abartlet@samba.org>
|
||||
Date: Mon, 11 Mar 2019 13:48:29 +1300
|
||||
Subject: [PATCH 2/2] samba-tool dbcheck: Avoid creating an RDN via ldb.Dn()
|
||||
format arguments
|
||||
|
||||
If we instead call dn.set_component() to overwrite a dummy DN we avoid parsing
|
||||
the full DN and set the RDN attribute and value directly as a string and
|
||||
string/size pair.
|
||||
|
||||
This may avoid some Python string issues due to the different handling of strings
|
||||
in 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 | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/python/samba/dbchecker.py b/python/samba/dbchecker.py
|
||||
index ffda828a522..95bd865e915 100644
|
||||
--- a/python/samba/dbchecker.py
|
||||
+++ b/python/samba/dbchecker.py
|
||||
@@ -899,8 +899,10 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
|
||||
try:
|
||||
nc_root = self.samdb.get_nc_root(obj.dn)
|
||||
lost_and_found = self.samdb.get_wellknown_dn(nc_root, dsdb.DS_GUID_LOSTANDFOUND_CONTAINER)
|
||||
- new_dn = ldb.Dn(self.samdb, str(obj.dn))
|
||||
- new_dn.remove_base_components(len(new_dn) - 1)
|
||||
+ new_dn = ldb.Dn(self.samdb, "RDN=RDN")
|
||||
+ new_dn.set_component(0, obj.dn.get_rdn_name(),
|
||||
+ obj.dn.get_rdn_val())
|
||||
+
|
||||
if self.do_rename(obj.dn, new_dn, lost_and_found, ["show_deleted:0", "relax:0"],
|
||||
"Failed to rename object %s into lostAndFound at %s" % (obj.dn, new_dn + lost_and_found)):
|
||||
self.report("Renamed object %s into lostAndFound at %s" % (obj.dn, new_dn + lost_and_found))
|
||||
@@ -925,8 +927,10 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
|
||||
def err_wrong_dn(self, obj, new_dn, rdn_attr, rdn_val, name_val, controls):
|
||||
'''handle a wrong dn'''
|
||||
|
||||
- new_rdn = ldb.Dn(self.samdb, str(new_dn))
|
||||
- new_rdn.remove_base_components(len(new_rdn) - 1)
|
||||
+ new_rdn = ldb.Dn(self.samdb, "RDN=RDN")
|
||||
+ new_rdn.set_component(0, new_dn.get_rdn_name(),
|
||||
+ new_dn.get_rdn_val())
|
||||
+
|
||||
new_parent = new_dn.parent()
|
||||
|
||||
attributes = ""
|
||||
--
|
||||
2.20.1
|
||||
|
|
@ -108,7 +108,7 @@
|
|||
Summary: Samba SMB server
|
||||
Name: samba
|
||||
Version: 4.10.8
|
||||
Release: 1
|
||||
Release: 2
|
||||
Epoch: 1
|
||||
License: GPLv3+
|
||||
Group: System/Servers
|
||||
|
@ -144,6 +144,11 @@ Patch11: ROSA-smb-default-config.patch
|
|||
Patch12: ROSA-Clearer-debug-about-ulimits.patch
|
||||
Patch13: ROSA-Force-libsystemd.patch
|
||||
|
||||
# https://bugzilla.rosalinux.ru/show_bug.cgi?id=10068
|
||||
# Rediffed from https://gitlab.com/samba-team/samba/merge_requests/289
|
||||
Patch14: 0001-samba-tool-dbcheck-Avoid-creating-child-DNs-via-ldb..patch
|
||||
Patch15: 0002-samba-tool-dbcheck-Avoid-creating-an-RDN-via-ldb.Dn-.patch
|
||||
|
||||
%if %{with clang}
|
||||
BuildRequires: clang lld
|
||||
%else
|
||||
|
|
Loading…
Add table
Reference in a new issue