From: Andrew Bartlett Date: Mon, 24 Feb 2020 03:22:24 +0000 (+1300) Subject: dsdb: Do not use ldb_save_controls() in partitions module for domain_scope X-Git-Tag: ldb-2.2.0~1540 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=01a3cf8e1e2562a77635ecf2a9a79e28af43fe7c;p=thirdparty%2Fsamba.git dsdb: Do not use ldb_save_controls() in partitions module for domain_scope The LDAP backend is long-removed so we do not need this workaround for a confused server any longer. This avoids references to old (but valid) memory after a new ldb_control array is allocated in ldb_save_controls() and keeps the controls pointer as constant as possible given the multiple ldb_request structures it will appear in. Signed-off-by: Andrew Bartlett Reviewed-by: Gary Lockyer --- diff --git a/source4/dsdb/samdb/ldb_modules/partition.c b/source4/dsdb/samdb/ldb_modules/partition.c index 6b0fbe728bc..77d657cd39f 100644 --- a/source4/dsdb/samdb/ldb_modules/partition.c +++ b/source4/dsdb/samdb/ldb_modules/partition.c @@ -752,7 +752,6 @@ static int partition_replicate(struct ldb_module *module, struct ldb_request *re /* search */ static int partition_search(struct ldb_module *module, struct ldb_request *req) { - struct ldb_control **saved_controls; /* Find backend */ struct partition_private_data *data = talloc_get_type(ldb_module_get_private(module), struct partition_private_data); @@ -787,12 +786,6 @@ static int partition_search(struct ldb_module *module, struct ldb_request *req) } - /* Remove the "domain_scope" control, so we don't confuse a backend - * server */ - if (domain_scope_control && !ldb_save_controls(domain_scope_control, req, &saved_controls)) { - return ldb_oom(ldb_module_get_ctx(module)); - } - /* if we aren't initialised yet go further */ if (!data || !data->partitions) { return ldb_next_request(module, req);