summaryrefslogtreecommitdiff
path: root/source4/dsdb/samdb
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2010-07-11 23:08:46 +1000
committerAndrew Bartlett <abartlet@samba.org>2010-09-02 10:40:34 +1000
commit68c61dfa3fa925c63247bef83f10dfa2efa458e6 (patch)
treefc167fec9989ad3ca24f757067294edcaebb3264 /source4/dsdb/samdb
parent379d073444f7acafb6e5761dd667073ad7371771 (diff)
downloadsamba-68c61dfa3fa925c63247bef83f10dfa2efa458e6.tar.gz
samba-68c61dfa3fa925c63247bef83f10dfa2efa458e6.tar.bz2
samba-68c61dfa3fa925c63247bef83f10dfa2efa458e6.zip
s4:dsdb Make the dereference control critical if input is critical
This helps us ensure that the backend knows about and respects the dereference control if our caller has asked that the extended DN control be considered critical. Andrew Bartlett
Diffstat (limited to 'source4/dsdb/samdb')
-rw-r--r--source4/dsdb/samdb/ldb_modules/extended_dn_out.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/extended_dn_out.c b/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
index ba4054a4c3..92ce328eb2 100644
--- a/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
+++ b/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
@@ -549,6 +549,7 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
const char * const *const_attrs;
struct ldb_context *ldb = ldb_module_get_ctx(module);
int ret;
+ bool critical;
struct extended_dn_out_private *p = talloc_get_type(ldb_module_get_private(module), struct extended_dn_out_private);
@@ -646,6 +647,7 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
/* mark extended DN and storage format controls as done */
if (control) {
+ critical = control->critical;
control->critical = 0;
}
@@ -659,7 +661,7 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
if (control && p && p->dereference && p->dereference_control) {
ret = ldb_request_add_control(down_req,
DSDB_OPENLDAP_DEREFERENCE_CONTROL,
- false, p->dereference_control);
+ critical, p->dereference_control);
if (ret != LDB_SUCCESS) {
return ret;
}