summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-07-21 09:42:54 +0000
committerAmitay Isaacs <amitay@samba.org>2014-07-22 03:42:13 +0200
commit70c79f514024551128acc2d3ba879ef1407ed130 (patch)
tree4a96b4044998fe86f375e93729a318318756637c /ctdb
parent5907b0cc1e1ba60ae15b41e04ae4a217ce2815cd (diff)
downloadsamba-70c79f514024551128acc2d3ba879ef1407ed130.tar.gz
ctdb: Avoid a talloc in ctdb_queue_send
Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/common/ctdb_io.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/ctdb/common/ctdb_io.c b/ctdb/common/ctdb_io.c
index 351006db2d3..0a85f3bcd7a 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;