summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/ldb_tdb/ldb_cache.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2006-10-17 05:50:01 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:21:17 -0500
commit0cf42c464ea240c4e57cc5b0c31227a0c5f684d4 (patch)
treea653bace124443095808542cc4927ba2c6e10251 /source4/lib/ldb/ldb_tdb/ldb_cache.c
parenta4137b50a7f34e78686aac57921752f9a6fd643e (diff)
downloadsamba-0cf42c464ea240c4e57cc5b0c31227a0c5f684d4.tar.gz
samba-0cf42c464ea240c4e57cc5b0c31227a0c5f684d4.tar.bz2
samba-0cf42c464ea240c4e57cc5b0c31227a0c5f684d4.zip
r19365: fixed a memory leak in the ldb attribute handling
(This used to be commit d7e07685164141f8fb2c2a6258e1fcb46ff9d06c)
Diffstat (limited to 'source4/lib/ldb/ldb_tdb/ldb_cache.c')
-rw-r--r--source4/lib/ldb/ldb_tdb/ldb_cache.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/source4/lib/ldb/ldb_tdb/ldb_cache.c b/source4/lib/ldb/ldb_tdb/ldb_cache.c
index a903ceb4cd..84932ac47f 100644
--- a/source4/lib/ldb/ldb_tdb/ldb_cache.c
+++ b/source4/lib/ldb/ldb_tdb/ldb_cache.c
@@ -71,13 +71,7 @@ static void ltdb_attributes_unload(struct ldb_module *module)
msg = ltdb->cache->attributes;
for (i=0;i<msg->num_elements;i++) {
- const struct ldb_attrib_handler *h;
- /* this is rather ugly - a consequence of const handling */
- h = ldb_attrib_handler(module->ldb, msg->elements[i].name);
ldb_remove_attrib_handler(module->ldb, msg->elements[i].name);
- if (strcmp(h->attr, msg->elements[i].name) == 0) {
- talloc_steal(msg, h->attr);
- }
}
talloc_free(ltdb->cache->attributes);
@@ -163,11 +157,11 @@ static int ltdb_attributes_load(struct ldb_module *module)
goto failed;
}
h2 = *h;
- h2.attr = talloc_strdup(module, msg->elements[i].name);
+ h2.attr = msg->elements[i].name;
+ h2.flags |= LDB_ATTR_FLAG_ALLOCATED;
if (ldb_set_attrib_handlers(module->ldb, &h2, 1) != 0) {
goto failed;
}
- talloc_steal(module->ldb->schema.attrib_handlers, h2.attr);
}
return 0;