+ ################################################################
+ # handle an unknown attribute error
+ def err_unknown_attribute(self, obj, attrname):
+ '''handle an unknown attribute error'''
+ self.report("ERROR: unknown attribute '%s' in %s" % (attrname, obj.dn))
+ if not self.confirm_all('Remove unknown attribute %s' % attrname, 'remove_all_unknown_attributes'):
+ self.report("Not removing %s" % attrname)
+ return
+ m = ldb.Message()
+ m.dn = obj.dn
+ m['old_value'] = ldb.MessageElement([], ldb.FLAG_MOD_DELETE, attrname)
+ if self.verbose:
+ self.report(self.samdb.write_ldif(m, ldb.CHANGETYPE_MODIFY))
+ try:
+ self.samdb.modify(m, controls=["relax:0"])
+ except Exception, msg:
+ self.report("Failed to remove unknown attribute %s : %s" % (attrname, msg))
+ return
+ self.report("Removed unknown attribute %s" % (attrname))
+