summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorAnatoliy Atanasov <anatoliy.atanasov@postpath.com>2009-07-03 15:24:40 +0300
committerAndrew Bartlett <abartlet@samba.org>2009-07-08 14:40:20 +1000
commit6b05a9079ce38eb590f4a94b427bc69123cd6a23 (patch)
tree9d02eff85227b970dba7563d106db7dd018c2dec /source4
parentdad913118344922139401ee5afaec8f3e68e05dd (diff)
downloadsamba-6b05a9079ce38eb590f4a94b427bc69123cd6a23.tar.gz
samba-6b05a9079ce38eb590f4a94b427bc69123cd6a23.tar.bz2
samba-6b05a9079ce38eb590f4a94b427bc69123cd6a23.zip
Fix for schemaUpdateNow command
Diffstat (limited to 'source4')
-rw-r--r--source4/dsdb/samdb/ldb_modules/partition.c8
-rw-r--r--source4/dsdb/samdb/ldb_modules/rootdse.c2
-rw-r--r--source4/dsdb/samdb/ldb_modules/schema_fsmo.c2
-rw-r--r--source4/dsdb/schema/schema_init.c2
-rw-r--r--source4/dsdb/schema/schema_set.c6
5 files changed, 14 insertions, 6 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/partition.c b/source4/dsdb/samdb/ldb_modules/partition.c
index 9763664940..563abf672a 100644
--- a/source4/dsdb/samdb/ldb_modules/partition.c
+++ b/source4/dsdb/samdb/ldb_modules/partition.c
@@ -1060,7 +1060,13 @@ static int partition_extended_schema_update_now(struct ldb_module *module, struc
}
/* fire the first one */
- return partition_call_first(ac);
+ ret = partition_call_first(ac);
+
+ if (ret != LDB_SUCCESS){
+ return ret;
+ }
+
+ return ldb_request_done(req, ret);
}
diff --git a/source4/dsdb/samdb/ldb_modules/rootdse.c b/source4/dsdb/samdb/ldb_modules/rootdse.c
index 29c4f5958f..7080fb632f 100644
--- a/source4/dsdb/samdb/ldb_modules/rootdse.c
+++ b/source4/dsdb/samdb/ldb_modules/rootdse.c
@@ -455,7 +455,7 @@ static int rootdse_modify(struct ldb_module *module, struct ldb_request *req)
}
talloc_free(ext_res);
- return ret;
+ return ldb_request_done(req, ret);
}
_PUBLIC_ const struct ldb_module_ops ldb_rootdse_module_ops = {
diff --git a/source4/dsdb/samdb/ldb_modules/schema_fsmo.c b/source4/dsdb/samdb/ldb_modules/schema_fsmo.c
index b1d8711cfa..1b8f786c35 100644
--- a/source4/dsdb/samdb/ldb_modules/schema_fsmo.c
+++ b/source4/dsdb/samdb/ldb_modules/schema_fsmo.c
@@ -297,6 +297,8 @@ static int schema_fsmo_extended(struct ldb_module *module, struct ldb_request *r
return ret;
}
+ dsdb_make_schema_global(ldb);
+
talloc_free(mem_ctx);
return LDB_SUCCESS;
}
diff --git a/source4/dsdb/schema/schema_init.c b/source4/dsdb/schema/schema_init.c
index 1084679f8d..dfa745e305 100644
--- a/source4/dsdb/schema/schema_init.c
+++ b/source4/dsdb/schema/schema_init.c
@@ -576,7 +576,7 @@ WERROR dsdb_read_prefixes_from_ldb(TALLOC_CTX *mem_ctx, struct ldb_context *ldb,
(*prefixes)[i].id = blob->ctr.dsdb.mappings[i].id_prefix<<16;
oid = talloc_strdup(mem_ctx, blob->ctr.dsdb.mappings[i].oid.oid);
(*prefixes)[i].oid = talloc_asprintf_append(oid, ".");
- (*prefixes)[i].oid_len = strlen(blob->ctr.dsdb.mappings[i].oid.oid);
+ (*prefixes)[i].oid_len = strlen((*prefixes)[i].oid);
}
talloc_free(blob);
diff --git a/source4/dsdb/schema/schema_set.c b/source4/dsdb/schema/schema_set.c
index 8b1188a1b5..5ded04e9da 100644
--- a/source4/dsdb/schema/schema_set.c
+++ b/source4/dsdb/schema/schema_set.c
@@ -135,7 +135,7 @@ static int dsdb_schema_set_attributes(struct ldb_context *ldb, struct dsdb_schem
mod_msg = ldb_msg_diff(ldb, res->msgs[0], msg);
if (mod_msg->num_elements > 0) {
- ret = ldb_modify(ldb, mod_msg);
+ ret = samdb_replace(ldb, mem_ctx, mod_msg);
}
}
@@ -154,7 +154,7 @@ static int dsdb_schema_set_attributes(struct ldb_context *ldb, struct dsdb_schem
if (ret == LDB_ERR_NO_SUCH_OBJECT) {
ret = ldb_add(ldb, msg_idx);
} else if (ret != LDB_SUCCESS) {
- } else if (res->count != 1) {
+ } else if (res_idx->count != 1) {
ret = ldb_add(ldb, msg_idx);
} else {
ret = LDB_SUCCESS;
@@ -163,7 +163,7 @@ static int dsdb_schema_set_attributes(struct ldb_context *ldb, struct dsdb_schem
mod_msg = ldb_msg_diff(ldb, res_idx->msgs[0], msg_idx);
if (mod_msg->num_elements > 0) {
- ret = ldb_modify(ldb, mod_msg);
+ ret = samdb_replace(ldb, mem_ctx, mod_msg);
}
}
if (ret == LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS) {