summaryrefslogtreecommitdiff
path: root/source4/lib/ldb
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2009-09-22 22:15:11 -0700
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-10-02 12:45:05 +0200
commitc7358d989034c9d936c04f2a7e4f89db252b798e (patch)
treea32e16da6d352bd18162a0e93e221ea2ae73751c /source4/lib/ldb
parente7846f69cacdd0551fcd777a71bf833a2fc9ca2b (diff)
downloadsamba-c7358d989034c9d936c04f2a7e4f89db252b798e.tar.gz
samba-c7358d989034c9d936c04f2a7e4f89db252b798e.tar.bz2
samba-c7358d989034c9d936c04f2a7e4f89db252b798e.zip
s4-ldb: fixed a memory leak
Diffstat (limited to 'source4/lib/ldb')
-rw-r--r--source4/lib/ldb/ldb_tdb/ldb_index.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/source4/lib/ldb/ldb_tdb/ldb_index.c b/source4/lib/ldb/ldb_tdb/ldb_index.c
index 1acbc204f7..66d70a9f47 100644
--- a/source4/lib/ldb/ldb_tdb/ldb_index.c
+++ b/source4/lib/ldb/ldb_tdb/ldb_index.c
@@ -135,6 +135,7 @@ static int ltdb_convert_from_idxptr(struct ldb_module *module, struct ldb_messag
return LDB_ERR_OPERATIONS_ERROR;
}
+ talloc_free(el->values);
*el = ptr->el;
if (ptr_out) {
@@ -163,7 +164,11 @@ static int ltdb_update_idxptr(struct ldb_module *module, TALLOC_CTX *mem_ctx,
el->values = val2;
el->num_values = 1;
- el->values[0].data = talloc_memdup(el->values, &ptr, sizeof(ptr));
+ if (strcmp(el->name, LTDB_IDXPTR) == 0) {
+ abort();
+ }
+
+ el->values[0].data = talloc_memdup(val2, &ptr, sizeof(ptr));
el->values[0].length = sizeof(ptr);
/* update the name */