diff options
author | Alan Antonuk <alan.antonuk@gmail.com> | 2015-12-25 20:26:41 -0800 |
---|---|---|
committer | Alan Antonuk <alan.antonuk@gmail.com> | 2015-12-25 20:26:41 -0800 |
commit | 9fbea0f2d063cfd989e9866859c6aafcadff8057 (patch) | |
tree | c7b741b7df24aeda18942450daa4176fadf56f49 | |
parent | 751fa2764ce7cde1963c2c2789d77dca27296e73 (diff) | |
download | rabbitmq-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.c | 12 |
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; |