summaryrefslogtreecommitdiff
path: root/source4/dsdb/samdb/ldb_modules/rootdse.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2006-02-22 00:26:56 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:51:59 -0500
commitf490434c0f1f8e63de478c6d65f264277257968a (patch)
tree80169600acc4cb917344ce2dd951782cb61471a7 /source4/dsdb/samdb/ldb_modules/rootdse.c
parent4515708b813621fa3f4a4dd7d0b08f3428cfccba (diff)
downloadsamba-f490434c0f1f8e63de478c6d65f264277257968a.tar.gz
samba-f490434c0f1f8e63de478c6d65f264277257968a.tar.bz2
samba-f490434c0f1f8e63de478c6d65f264277257968a.zip
r13606: An attempt to fix #3525.
The problem was that the supportedControls were being stolen into the result sent to the client, then talloc_free()ed. This caused them to be invalid on the next rootDSE query. This also tries to avoid attaching the result to the long-term samdb context, and avoids an extra loop in the result processing (pointed out by tridge). Andrew BARtlett (This used to be commit d0b8957f38fda4d84a318d6121ad87ba53a9ddb3)
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules/rootdse.c')
-rw-r--r--source4/dsdb/samdb/ldb_modules/rootdse.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/rootdse.c b/source4/dsdb/samdb/ldb_modules/rootdse.c
index 5f5b362c53..96236301b0 100644
--- a/source4/dsdb/samdb/ldb_modules/rootdse.c
+++ b/source4/dsdb/samdb/ldb_modules/rootdse.c
@@ -73,8 +73,12 @@ static int rootdse_add_dynamic(struct ldb_module *module, struct ldb_request *re
if (do_attribute(s->attrs, "supportedControl")) {
int i;
for (i = 0; i < priv->num_controls; i++) {
+ char *control = talloc_strdup(msg, priv->controls[i]);
+ if (!control) {
+ goto failed;
+ }
if (ldb_msg_add_string(msg, "supportedControl",
- priv->controls[i]) != 0) {
+ control) != 0) {
goto failed;
}
}