summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-10-12 17:32:24 +0200
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-10-12 17:35:52 +0200
commit8b67e1ab703e85182eb288138d3fb1fa8a903002 (patch)
tree4a509019ce3bcd03a3d74f0e1d3a9b1b485864c5
parent926a935a612e3d3d3aec6473303a884126d9ea72 (diff)
downloadsamba-8b67e1ab703e85182eb288138d3fb1fa8a903002.tar.gz
samba-8b67e1ab703e85182eb288138d3fb1fa8a903002.tar.bz2
samba-8b67e1ab703e85182eb288138d3fb1fa8a903002.zip
s4:objectclass ldb module - Check for empty messages
I think the check for empty messages fits best here.
-rw-r--r--source4/dsdb/samdb/ldb_modules/objectclass.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/objectclass.c b/source4/dsdb/samdb/ldb_modules/objectclass.c
index b6f1a1aa23..b5e058df0b 100644
--- a/source4/dsdb/samdb/ldb_modules/objectclass.c
+++ b/source4/dsdb/samdb/ldb_modules/objectclass.c
@@ -706,7 +706,13 @@ static int objectclass_modify(struct ldb_module *module, struct ldb_request *req
if (!schema) {
return ldb_next_request(module, req);
}
- objectclass_element = ldb_msg_find_element(req->op.mod.message, "objectClass");
+
+ /* As with the "real" AD we don't accept empty messages */
+ if (req->op.mod.message->num_elements == 0) {
+ ldb_set_errstring(ldb, "objectclass: modify message must have "
+ "elements/attributes!");
+ return LDB_ERR_UNWILLING_TO_PERFORM;
+ }
ac = oc_init_context(module, req);
if (ac == NULL) {
@@ -715,6 +721,7 @@ static int objectclass_modify(struct ldb_module *module, struct ldb_request *req
/* If no part of this touches the objectClass, then we don't
* need to make any changes. */
+ objectclass_element = ldb_msg_find_element(req->op.mod.message, "objectClass");
/* If the only operation is the deletion of the objectClass
* then go on with just fixing the attribute case */