s4-ldb: fixed a memory leak
authorAndrew Tridgell <tridge@samba.org>
Wed, 23 Sep 2009 05:15:11 +0000 (22:15 -0700)
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Fri, 2 Oct 2009 10:45:05 +0000 (12:45 +0200)
source4/lib/ldb/ldb_tdb/ldb_index.c

index 1acbc204f7f13d44673c1bfc3d6349a4149dc7ef..66d70a9f47ea772e1f0348a2a86293a5fd19c24d 100644 (file)
@@ -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 */