From: Arvid Requate Date: Thu, 6 Feb 2014 16:50:57 +0000 (+0100) Subject: s4:samdb: respect SEARCH_FLAG_PRESERVEONDELETE X-Git-Tag: tdb-1.2.13~695 X-Git-Url: http://git.samba.org/?p=samba.git;a=commitdiff_plain;h=98c961eb82194cd0738dbc58e4ae9f81771b409e s4:samdb: respect SEARCH_FLAG_PRESERVEONDELETE According to MS-ADTS section 3.1.1.5.5.1.1 the searchFlags must be checked. Signed-off-by: Arvid Requate Reviewed-by: Andrew Bartlett Reviewed-by: David Disseldorp Autobuild-User(master): David Disseldorp Autobuild-Date(master): Thu Feb 6 21:42:22 CET 2014 on sn-devel-104 --- diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c index 91a5d9233c5..c5dcf2140f1 100644 --- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c +++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c @@ -3214,8 +3214,13 @@ static int replmd_delete_internals(struct ldb_module *module, struct ldb_request */ continue; } - if (!sa->linkID && ldb_attr_in_list(preserved_attrs, el->name)) { - continue; + if (!sa->linkID) { + if (ldb_attr_in_list(preserved_attrs, el->name)) { + continue; + } + if (sa->searchFlags & SEARCH_FLAG_PRESERVEONDELETE) { + continue; + } } ret = ldb_msg_add_empty(msg, el->name, LDB_FLAG_MOD_DELETE, &el); if (ret != LDB_SUCCESS) {