summaryrefslogtreecommitdiffstats
path: root/source/lib
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2009-03-04 22:05:17 +0100
committerKarolin Seeger <kseeger@samba.org>2009-03-27 14:15:39 +0100
commit72f05fd39cd8e6fecdf5fb5253861315867e5f29 (patch)
tree7feaedff8edbae12a99a6f0bac0e04934914a0af /source/lib
parent43ccd3180aca89ca0f0efefdcdb26f2f436a79c1 (diff)
downloadsamba-72f05fd39cd8e6fecdf5fb5253861315867e5f29.tar.gz
samba-72f05fd39cd8e6fecdf5fb5253861315867e5f29.tar.xz
samba-72f05fd39cd8e6fecdf5fb5253861315867e5f29.zip
s3:dbwrap_ctdb_marshall_add: don't leak the ctdb_rec_data to the outside
Michael Signed-off-by: Michael Adam <obnox@samba.org> (cherry picked from commit a470af9a18b328548f241dca4f744d25c7cdc13e)
Diffstat (limited to 'source/lib')
-rw-r--r--source/lib/dbwrap_ctdb.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/source/lib/dbwrap_ctdb.c b/source/lib/dbwrap_ctdb.c
index 2818634b143..d5d4ac7c899 100644
--- a/source/lib/dbwrap_ctdb.c
+++ b/source/lib/dbwrap_ctdb.c
@@ -121,9 +121,9 @@ static struct ctdb_marshall_buffer *db_ctdb_marshall_add(TALLOC_CTX *mem_ctx,
{
struct ctdb_rec_data *r;
size_t m_size, r_size;
- struct ctdb_marshall_buffer *m2;
+ struct ctdb_marshall_buffer *m2 = NULL;
- r = db_ctdb_marshall_record(mem_ctx, reqid, key, header, data);
+ r = db_ctdb_marshall_record(talloc_tos(), reqid, key, header, data);
if (r == NULL) {
talloc_free(m);
return NULL;
@@ -133,7 +133,7 @@ static struct ctdb_marshall_buffer *db_ctdb_marshall_add(TALLOC_CTX *mem_ctx,
m = (struct ctdb_marshall_buffer *)talloc_zero_size(
mem_ctx, offsetof(struct ctdb_marshall_buffer, data));
if (m == NULL) {
- return NULL;
+ goto done;
}
m->db_id = db_id;
}
@@ -145,15 +145,15 @@ static struct ctdb_marshall_buffer *db_ctdb_marshall_add(TALLOC_CTX *mem_ctx,
mem_ctx, m, m_size + r_size);
if (m2 == NULL) {
talloc_free(m);
- return NULL;
+ goto done;
}
memcpy(m_size + (uint8_t *)m2, r, r_size);
- talloc_free(r);
-
m2->count++;
+done:
+ talloc_free(r);
return m2;
}