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

30 lines
1.5 KiB
Diff
Raw Normal View History

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 = ""