summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 */