summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2019-02-25 15:09:36 +0100
committerKarolin Seeger <kseeger@samba.org>2019-03-28 12:19:12 +0000
commitac900c23b5bc2fa8fe1bbb0b6f195fcd43ec491f (patch)
tree7383bacdae65f2e8f341dc9d4fd3c44344e179ad
parent3136a2cc546e5674a810584323944246d7466855 (diff)
downloadsamba-ac900c23b5bc2fa8fe1bbb0b6f195fcd43ec491f.tar.gz
dbcheck: do isDeleted, systemFlags and replPropertyMetaData detection first
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13816 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> (cherry picked from commit 9afcd5331ce567bd80d35175f8e4e21c506e9347)
-rw-r--r--python/samba/dbchecker.py25
1 files changed, 14 insertions, 11 deletions
diff --git a/python/samba/dbchecker.py b/python/samba/dbchecker.py
index 75b934b3a59..a7edb5ace53 100644
--- a/python/samba/dbchecker.py
+++ b/python/samba/dbchecker.py
@@ -2058,7 +2058,6 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
error_count = 0
set_attrs_from_md = set()
set_attrs_seen = set()
- got_repl_property_meta_data = False
got_objectclass = False
nc_dn = self.samdb.get_nc_root(obj.dn)
@@ -2076,6 +2075,18 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
name_val = None
isDeleted = False
systemFlags = 0
+ repl_meta_data_val = None
+
+ for attrname in obj:
+ if str(attrname).lower() == 'isdeleted':
+ if str(obj[attrname][0]) != "FALSE":
+ isDeleted = True
+
+ if str(attrname).lower() == 'systemflags':
+ systemFlags = int(obj[attrname][0])
+
+ if str(attrname).lower() == 'replpropertymetadata':
+ repl_meta_data_val = obj[attrname][0]
for attrname in obj:
if attrname == 'dn' or attrname == "distinguishedName":
@@ -2101,13 +2112,6 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
else:
object_rdn_val = str(obj[attrname][0])
- if str(attrname).lower() == 'isdeleted':
- if str(obj[attrname][0]) != "FALSE":
- isDeleted = True
-
- if str(attrname).lower() == 'systemflags':
- systemFlags = int(obj[attrname][0])
-
if str(attrname).lower() == 'replpropertymetadata':
if self.has_replmetadata_zero_invocationid(dn, obj[attrname]):
error_count += 1
@@ -2137,7 +2141,6 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("ERROR: Not fixing incorrect inital attributeID in '%s' on '%s', it should be objectClass" %
(attrname, str(dn)))
- got_repl_property_meta_data = True
continue
if str(attrname).lower() == 'ntsecuritydescriptor':
@@ -2317,13 +2320,13 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("ERROR: Not fixing %s=%r on '%s'" % (object_rdn_attr, object_rdn_val, str(obj.dn)))
show_dn = True
- if got_repl_property_meta_data:
+ if repl_meta_data_val:
if obj.dn == deleted_objects_dn:
isDeletedAttId = 131120
# It's 29/12/9999 at 23:59:59 UTC as specified in MS-ADTS 7.1.1.4.2 Deleted Objects Container
expectedTimeDo = 2650466015990000000
- originating = self.get_originating_time(obj["replPropertyMetaData"][0], isDeletedAttId)
+ originating = self.get_originating_time(repl_meta_data_val, isDeletedAttId)
if originating != expectedTimeDo:
if self.confirm_all("Fix isDeleted originating_change_time on '%s'" % str(dn), 'fix_time_metadata'):
nmsg = ldb.Message()