diff options
author | Volker Lendecke <vl@samba.org> | 2014-07-21 09:42:54 +0000 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2014-07-22 03:42:13 +0200 |
commit | 70c79f514024551128acc2d3ba879ef1407ed130 (patch) | |
tree | 4a96b4044998fe86f375e93729a318318756637c | |
parent | 5907b0cc1e1ba60ae15b41e04ae4a217ce2815cd (diff) | |
download | samba-70c79f514024551128acc2d3ba879ef1407ed130.tar.gz samba-70c79f514024551128acc2d3ba879ef1407ed130.tar.xz samba-70c79f514024551128acc2d3ba879ef1407ed130.zip |
ctdb: Avoid a talloc in ctdb_queue_send
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
-rw-r--r-- | ctdb/common/ctdb_io.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/ctdb/common/ctdb_io.c b/ctdb/common/ctdb_io.c index 351006db2d..0a85f3bcd7 100644 --- a/ctdb/common/ctdb_io.c +++ b/ctdb/common/ctdb_io.c @@ -44,6 +44,7 @@ struct ctdb_queue_pkt { uint8_t *data; uint32_t length; uint32_t full_length; + uint8_t buf[]; }; struct ctdb_queue { @@ -324,11 +325,13 @@ int ctdb_queue_send(struct ctdb_queue *queue, uint8_t *data, uint32_t length) if (length2 == 0) return 0; } - pkt = talloc(queue, struct ctdb_queue_pkt); + pkt = talloc_size( + queue, offsetof(struct ctdb_queue_pkt, buf) + length2); CTDB_NO_MEMORY(queue->ctdb, pkt); + talloc_set_name_const(pkt, "struct ctdb_queue_pkt"); - pkt->data = talloc_memdup(pkt, data, length2); - CTDB_NO_MEMORY(queue->ctdb, pkt->data); + pkt->data = pkt->buf; + memcpy(pkt->data, data, length2); pkt->length = length2; pkt->full_length = full_length; |