From 71515bb578dc6976981936e7d11a89ece95f7200 Mon Sep 17 00:00:00 2001 From: Arvid Requate Date: Thu, 23 Jan 2014 13:16:20 +0100 Subject: [PATCH] Improve objectClass validation Reviewed-by: Andrew Bartlett --- source4/dsdb/samdb/ldb_modules/repl_meta_data.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c index c5dcf21..186cc93 100644 --- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c +++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c @@ -1081,6 +1081,12 @@ static int replmd_add(struct ldb_module *module, struct ldb_request *req) replmd_ldb_message_sort(msg, ac->schema); objectclass_el = ldb_msg_find_element(msg, "objectClass"); + if (!objectclass_el) { + DEBUG(0,(__location__ ": objectClass missing on %s\n", + ldb_dn_get_linearized(msg->dn))); + talloc_free(ac); + return LDB_ERR_OPERATIONS_ERROR; + } is_urgent = replmd_check_urgent_objectclass(objectclass_el, REPL_URGENT_ON_CREATE); @@ -1429,7 +1435,11 @@ static int replmd_update_rpmd(struct ldb_module *module, } objectclass_el = ldb_msg_find_element(res->msgs[0], "objectClass"); - if (is_urgent && replmd_check_urgent_objectclass(objectclass_el, + if (!objectclass_el) { + ldb_asprintf_errstring(ldb, __location__ ": objectClass missing on %s\n", + ldb_dn_get_linearized(msg->dn)); + return LDB_ERR_OPERATIONS_ERROR; + } else if (is_urgent && replmd_check_urgent_objectclass(objectclass_el, situation)) { *is_urgent = true; } -- 1.8.5.3