r4486: fixed some memory leaks in the new ldb code, by ensuring that memory is always
authorAndrew Tridgell <tridge@samba.org>
Sun, 2 Jan 2005 23:03:50 +0000 (23:03 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:08:11 +0000 (13:08 -0500)
allocated as a child of the right context
(This used to be commit 1071712cf5951fa2e94f314bd7678cfa51b2dbcd)

source4/lib/ldb/ldb_tdb/ldb_cache.c
source4/lib/ldb/ldb_tdb/ldb_pack.c
source4/lib/ldb/ldb_tdb/ldb_search.c

index e7420c5f7af381d4300a2f0d870c392ffa68438a..037403d81ef45a17bb24e2f06447f56a751e714c 100644 (file)
@@ -205,14 +205,14 @@ int ltdb_increase_sequence_number(struct ldb_module *module)
        char *s = NULL;
        int ret;
 
-       s = talloc_asprintf(ldb, "%.0f", ltdb->sequence_number+1);
-       if (!s) {
+       msg = talloc_p(ltdb, struct ldb_message);
+       if (msg == NULL) {
                errno = ENOMEM;
                return -1;
        }
 
-       msg = talloc_p(ltdb, struct ldb_message);
-       if (msg == NULL) {
+       s = talloc_asprintf(msg, "%.0f", ltdb->sequence_number+1);
+       if (!s) {
                errno = ENOMEM;
                return -1;
        }
index 4c1241d0bd87916f22b14031fb9640978ada009a..501728fac59b476f50fdf2868b0d94728fd427ed 100644 (file)
@@ -199,7 +199,7 @@ int ltdb_unpack_data(struct ldb_module *module,
                goto failed;
        }
 
-       message->elements = talloc_array_p(ldb, struct ldb_message_element, message->num_elements);
+       message->elements = talloc_array_p(message, struct ldb_message_element, message->num_elements);
        if (!message->elements) {
                errno = ENOMEM;
                goto failed;
index 720188b74cdc0fd8a7173e64ae485130f5162e5f..295c9578ccf1217f27dfe13c17070b3e1ef25212 100644 (file)
@@ -306,7 +306,7 @@ int ltdb_search_dn(struct ldb_module *module, char *dn,
                return -1;              
        }
 
-       (*res)[0] = msg2;
+       (*res)[0] = talloc_steal(*res, msg2);
        (*res)[1] = NULL;
 
        return 1;
@@ -341,7 +341,7 @@ int ltdb_add_attr_results(struct ldb_module *module, struct ldb_message *msg,
 
        (*res) = res2;
 
-       (*res)[*count] = msg2;
+       (*res)[*count] = talloc_steal(*res, msg2);
        (*res)[(*count)+1] = NULL;
        (*count)++;