diff options
author | Michael Adam <obnox@samba.org> | 2009-03-04 22:05:17 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2009-03-04 22:49:25 +0100 |
commit | bb0fb975621f4962fb7e2438396d94818891151b (patch) | |
tree | abc391e69db24fb1e6f29010262d937ee0f74fff | |
parent | 9d798494a90c13d605a52644a1a386a9fb109063 (diff) | |
download | samba-bb0fb975621f4962fb7e2438396d94818891151b.tar.gz samba-bb0fb975621f4962fb7e2438396d94818891151b.tar.bz2 samba-bb0fb975621f4962fb7e2438396d94818891151b.zip |
s3:dbwrap_ctdb_marshall_add: don't leak the ctdb_rec_data to the outside
Michael
-rw-r--r-- | source3/lib/dbwrap_ctdb.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/source3/lib/dbwrap_ctdb.c b/source3/lib/dbwrap_ctdb.c index 03667ff355..4a5bf6d81a 100644 --- a/source3/lib/dbwrap_ctdb.c +++ b/source3/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; } |