From 9fbea0f2d063cfd989e9866859c6aafcadff8057 Mon Sep 17 00:00:00 2001 From: Alan Antonuk Date: Fri, 25 Dec 2015 20:26:41 -0800 Subject: Lib: amqp_frame_to_bytes: use temp bytes_t Use temporary amqp_bytes_t to encode properties instead of using the encoded input parameter. Coverity CID: 1345884 --- librabbitmq/amqp_connection.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/librabbitmq/amqp_connection.c b/librabbitmq/amqp_connection.c index b2175c2..18cf941 100644 --- a/librabbitmq/amqp_connection.c +++ b/librabbitmq/amqp_connection.c @@ -497,22 +497,26 @@ static int amqp_frame_to_bytes(const amqp_frame_t *frame, amqp_bytes_t buffer, break; } - case AMQP_FRAME_HEADER: + case AMQP_FRAME_HEADER: { + amqp_bytes_t properties_encoded; + amqp_e16(out_frame, HEADER_SIZE, frame->payload.properties.class_id); amqp_e16(out_frame, HEADER_SIZE + 2, 0); /* "weight" */ amqp_e64(out_frame, HEADER_SIZE + 4, frame->payload.properties.body_size); - encoded->bytes = amqp_offset(out_frame, HEADER_SIZE + 12); - encoded->len = buffer.len - HEADER_SIZE - 12 - FOOTER_SIZE; + properties_encoded.bytes = amqp_offset(out_frame, HEADER_SIZE + 12); + properties_encoded.len = buffer.len - HEADER_SIZE - 12 - FOOTER_SIZE; res = amqp_encode_properties(frame->payload.properties.class_id, - frame->payload.properties.decoded, *encoded); + frame->payload.properties.decoded, + properties_encoded); if (res < 0) { return res; } out_frame_len = res + 12; break; + } case AMQP_FRAME_HEARTBEAT: out_frame_len = 0; -- cgit v1.2.1