diff options
author | Andrew Bartlett <abartlet@samba.org> | 2012-07-18 17:13:30 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2012-07-18 09:32:53 +0200 |
commit | e4001a78c1d0b286b37e19c733cf1bbc18166818 (patch) | |
tree | bb2099eaa6998935660d83ec2219e891bc9b411a /source4/dsdb/samdb/ldb_modules/objectclass_attrs.c | |
parent | 5630e25a35ea95ca848281933a5a3a96306986a4 (diff) | |
download | samba-e4001a78c1d0b286b37e19c733cf1bbc18166818.tar.gz samba-e4001a78c1d0b286b37e19c733cf1bbc18166818.tar.bz2 samba-e4001a78c1d0b286b37e19c733cf1bbc18166818.zip |
dsdb: Allocate new OID to allow updates of a read-only replica
Normally this would be a very bad idea, but the specific case of fixing the instanceType
is the only case where this makes sense.
Andrew Bartlett
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules/objectclass_attrs.c')
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/objectclass_attrs.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c index e50c8e2369..c521f332ae 100644 --- a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c +++ b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c @@ -408,10 +408,14 @@ static int attr_handler2(struct oc_context *ac) found = str_list_check(harmless_attrs, attr->lDAPDisplayName); } if (!found) { - ldb_asprintf_errstring(ldb, "objectclass_attrs: attribute '%s' on entry '%s' does not exist in the specified objectclasses!", - msg->elements[i].name, - ldb_dn_get_linearized(msg->dn)); - return LDB_ERR_OBJECT_CLASS_VIOLATION; + /* we allow this for dbcheck to fix the rest of this broken entry */ + if (!ldb_request_get_control(ac->req, DSDB_CONTROL_DBCHECK) || + ac->req->operation == LDB_ADD) { + ldb_asprintf_errstring(ldb, "objectclass_attrs: attribute '%s' on entry '%s' does not exist in the specified objectclasses!", + msg->elements[i].name, + ldb_dn_get_linearized(msg->dn)); + return LDB_ERR_OBJECT_CLASS_VIOLATION; + } } } |