samba/0002-samba-tool-dbcheck-Avoid-creating-an-RDN-via-ldb.Dn-.patch

52 lines
2.3 KiB
Diff
Raw Normal View History

2020-06-08 14:54:15 +09:00
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(-)
2020-03-19 15:40:50 +08:00
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:14:13.881649351 +0800
@@ -892,8 +892,10 @@
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))
2020-03-19 15:40:50 +08:00
@@ -918,8 +920,10 @@
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 = ""
2020-06-08 14:54:15 +09:00
--
2.20.1