summaryrefslogtreecommitdiff
path: root/source4/dsdb/samdb/ldb_modules/samldb.c
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2006-05-21 20:06:01 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:08:19 -0500
commite2112ba3b7d491f6b6d9957b57a36a78efed18a9 (patch)
tree0c1d731eaae11579a71a635dd7d78043b435face /source4/dsdb/samdb/ldb_modules/samldb.c
parent03f520fd1232ef14eeb75af439685c6978db04e3 (diff)
downloadsamba-e2112ba3b7d491f6b6d9957b57a36a78efed18a9.tar.gz
samba-e2112ba3b7d491f6b6d9957b57a36a78efed18a9.tar.bz2
samba-e2112ba3b7d491f6b6d9957b57a36a78efed18a9.zip
r15782: More fixes for async cases
(This used to be commit 3c9434e264710a1fa29adedbe571d5324ecae906)
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules/samldb.c')
-rw-r--r--source4/dsdb/samdb/ldb_modules/samldb.c48
1 files changed, 34 insertions, 14 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c
index 31cf6143a1..8a708af83b 100644
--- a/source4/dsdb/samdb/ldb_modules/samldb.c
+++ b/source4/dsdb/samdb/ldb_modules/samldb.c
@@ -625,6 +625,20 @@ static int samldb_fill_user_or_computer_object(struct ldb_module *module, const
return LDB_ERR_OPERATIONS_ERROR;
}
+ /* make sure we also add person, organizationalPerson and top */
+ if ( ! samldb_find_or_add_attribute(module, msg2, "objectclass", "person", "person")) {
+ talloc_free(mem_ctx);
+ return LDB_ERR_OPERATIONS_ERROR;
+ }
+ if ( ! samldb_find_or_add_attribute(module, msg2, "objectclass", "organizationalPerson", "organizationalPerson")) {
+ talloc_free(mem_ctx);
+ return LDB_ERR_OPERATIONS_ERROR;
+ }
+ if ( ! samldb_find_or_add_attribute(module, msg2, "objectclass", "top", "top")) {
+ talloc_free(mem_ctx);
+ return LDB_ERR_OPERATIONS_ERROR;
+ }
+
/* meddle with objectclass */
if (ldb_msg_find_element(msg2, "samAccountName") == NULL) {
@@ -762,13 +776,16 @@ static int samldb_add(struct ldb_module *module, struct ldb_request *req)
return ldb_next_request(module, req);
}
- /* is user or computer? add all relevant missing objects */
- if ((samldb_find_attribute(msg, "objectclass", "user") != NULL) ||
- (samldb_find_attribute(msg, "objectclass", "computer") != NULL)) {
- ret = samldb_fill_user_or_computer_object(module, msg, &msg2);
- if (ret) {
- return ret;
- }
+ /* is user or computer? Skip if not */
+ if ((samldb_find_attribute(msg, "objectclass", "user") == NULL) &&
+ (samldb_find_attribute(msg, "objectclass", "computer") == NULL)) {
+ return ldb_next_request(module, req);
+ }
+
+ /* add all relevant missing objects */
+ ret = samldb_fill_user_or_computer_object(module, msg, &msg2);
+ if (ret) {
+ return ret;
}
/* is group? add all relevant missing objects */
@@ -830,13 +847,16 @@ static int samldb_add_async(struct ldb_module *module, struct ldb_request *req)
return LDB_ERR_OPERATIONS_ERROR;
}
- /* is user or computer? add all relevant missing objects */
- if ((samldb_find_attribute(msg, "objectclass", "user") != NULL) ||
- (samldb_find_attribute(msg, "objectclass", "computer") != NULL)) {
- ret = samldb_fill_user_or_computer_object(module, msg, &msg2);
- if (ret) {
- return ret;
- }
+ /* is user or computer? Skip if not */
+ if ((samldb_find_attribute(msg, "objectclass", "user") == NULL) &&
+ (samldb_find_attribute(msg, "objectclass", "computer") == NULL)) {
+ return ldb_next_request(module, req);
+ }
+
+ /* add all relevant missing objects */
+ ret = samldb_fill_user_or_computer_object(module, msg, &msg2);
+ if (ret) {
+ return ret;
}
/* is group? add all relevant missing objects */