summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Antonuk <alan.antonuk@gmail.com>2015-12-25 20:26:41 -0800
committerAlan Antonuk <alan.antonuk@gmail.com>2015-12-25 20:26:41 -0800
commit9fbea0f2d063cfd989e9866859c6aafcadff8057 (patch)
treec7b741b7df24aeda18942450daa4176fadf56f49
parent751fa2764ce7cde1963c2c2789d77dca27296e73 (diff)
downloadrabbitmq-c-9fbea0f2d063cfd989e9866859c6aafcadff8057.tar.gz
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
-rw-r--r--librabbitmq/amqp_connection.c12
1 files 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;