diff options
author | Andrew Bartlett <abartlet@samba.org> | 2012-08-14 16:08:47 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2012-08-14 10:05:14 +0200 |
commit | 956678685325a79a315f4ef19c0d834fd1747e4c (patch) | |
tree | 62b89848fbf552187a07d1d520702112f3b4ac45 /source4/dsdb/samdb/ldb_modules/util.c | |
parent | 0f2a87b547be43b4764c48350fd03ff22e086806 (diff) | |
download | samba-956678685325a79a315f4ef19c0d834fd1747e4c.tar.gz samba-956678685325a79a315f4ef19c0d834fd1747e4c.tar.bz2 samba-956678685325a79a315f4ef19c0d834fd1747e4c.zip |
s4-dsdb: Add mem_ctx argument to samdb_ntds_settings_dn
As this value is calculated new each time, we need to give it a context to live on.
If the value is the forced value during provision, a reference is taken.
This was responsible for the memory leak in the replication process. In the
example I was given, this DN appeared in memory 13596 times!
Andrew Bartlett
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Tue Aug 14 10:05:14 CEST 2012 on sn-devel-104
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules/util.c')
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/util.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/util.c b/source4/dsdb/samdb/ldb_modules/util.c index 0f1a61236f..253d5c1d2c 100644 --- a/source4/dsdb/samdb/ldb_modules/util.c +++ b/source4/dsdb/samdb/ldb_modules/util.c @@ -691,15 +691,16 @@ int dsdb_check_optional_feature(struct ldb_module *module, struct GUID op_featur struct ldb_message_element *el; struct ldb_dn *feature_dn; - feature_dn = samdb_ntds_settings_dn(ldb_module_get_ctx(module)); + tmp_ctx = talloc_new(ldb); + + feature_dn = samdb_ntds_settings_dn(ldb_module_get_ctx(module), tmp_ctx); if (feature_dn == NULL) { + talloc_free(tmp_ctx); return ldb_operr(ldb_module_get_ctx(module)); } *feature_enabled = false; - tmp_ctx = talloc_new(ldb); - ret = dsdb_module_search_dn(module, tmp_ctx, &res, feature_dn, attrs, DSDB_FLAG_NEXT_MODULE, NULL); if (ret != LDB_SUCCESS) { ldb_asprintf_errstring(ldb, |