summaryrefslogtreecommitdiff
path: root/source4/lib/ldb
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2010-12-16 22:28:45 +1100
committerAndrew Bartlett <abartlet@samba.org>2010-12-18 01:34:18 +0100
commit656c828b9fcd8538b1503f86f8ac499837d7fc59 (patch)
tree6a1c42cf3638bb8664674ada054f22113fc5ddd9 /source4/lib/ldb
parent6967cf27eb94f9097c302bc2807f430ca4a641f2 (diff)
downloadsamba-656c828b9fcd8538b1503f86f8ac499837d7fc59.tar.gz
samba-656c828b9fcd8538b1503f86f8ac499837d7fc59.tar.bz2
samba-656c828b9fcd8538b1503f86f8ac499837d7fc59.zip
lib/ldb Remove talloc_free() that causes double-free in callbacks.
This partially reverts 0941099a, which was a little over-eager in fixing what were presumed to be memory leaks. It is always the callbacks responsiblity to free the ares, but if they don't then the end of the request should handle the cleanup. Attempting to talloc_free() here will result (as it did in the descriptor module) in a double-free error if the callback does free it, and no other caller of ldb_module_send_entry() has this behaviour. Andrew Bartlett
Diffstat (limited to 'source4/lib/ldb')
-rw-r--r--source4/lib/ldb/ldb_tdb/ldb_index.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/source4/lib/ldb/ldb_tdb/ldb_index.c b/source4/lib/ldb/ldb_tdb/ldb_index.c
index 71cffb90b3..02e4acbbde 100644
--- a/source4/lib/ldb/ldb_tdb/ldb_index.c
+++ b/source4/lib/ldb/ldb_tdb/ldb_index.c
@@ -966,7 +966,9 @@ static int ltdb_index_filter(const struct dn_list *dn_list,
ret = ldb_module_send_entry(ac->req, msg, NULL);
if (ret != LDB_SUCCESS) {
- talloc_free(msg);
+ /* Regardless of success or failure, the msg
+ * is the callbacks responsiblity, and should
+ * not be talloc_free()'ed */
ac->request_terminated = true;
return ret;
}