summaryrefslogtreecommitdiff
path: root/librabbitmq/amqp_framing.c
diff options
context:
space:
mode:
Diffstat (limited to 'librabbitmq/amqp_framing.c')
-rw-r--r--librabbitmq/amqp_framing.c330
1 files changed, 196 insertions, 134 deletions
diff --git a/librabbitmq/amqp_framing.c b/librabbitmq/amqp_framing.c
index f080840..a042289 100644
--- a/librabbitmq/amqp_framing.c
+++ b/librabbitmq/amqp_framing.c
@@ -1218,13 +1218,15 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
int res = amqp_encode_table(encoded, &(m->server_properties), &offset);
if (res < 0) return res;
}
- if (!amqp_encode_32(encoded, &offset, m->mechanisms.len)
+ if (UINT32_MAX < m->mechanisms.len
+ || !amqp_encode_32(encoded, &offset, (uint32_t)m->mechanisms.len)
|| !amqp_encode_bytes(encoded, &offset, m->mechanisms))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_32(encoded, &offset, m->locales.len)
+ if (UINT32_MAX < m->locales.len
+ || !amqp_encode_32(encoded, &offset, (uint32_t)m->locales.len)
|| !amqp_encode_bytes(encoded, &offset, m->locales))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_START_OK_METHOD: {
amqp_connection_start_ok_t *m = (amqp_connection_start_ok_t *) decoded;
@@ -1232,132 +1234,146 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
int res = amqp_encode_table(encoded, &(m->client_properties), &offset);
if (res < 0) return res;
}
- if (!amqp_encode_8(encoded, &offset, m->mechanism.len)
+ if (UINT8_MAX < m->mechanism.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->mechanism.len)
|| !amqp_encode_bytes(encoded, &offset, m->mechanism))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_32(encoded, &offset, m->response.len)
+ if (UINT32_MAX < m->response.len
+ || !amqp_encode_32(encoded, &offset, (uint32_t)m->response.len)
|| !amqp_encode_bytes(encoded, &offset, m->response))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->locale.len)
+ if (UINT8_MAX < m->locale.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->locale.len)
|| !amqp_encode_bytes(encoded, &offset, m->locale))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_SECURE_METHOD: {
amqp_connection_secure_t *m = (amqp_connection_secure_t *) decoded;
- if (!amqp_encode_32(encoded, &offset, m->challenge.len)
+ if (UINT32_MAX < m->challenge.len
+ || !amqp_encode_32(encoded, &offset, (uint32_t)m->challenge.len)
|| !amqp_encode_bytes(encoded, &offset, m->challenge))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_SECURE_OK_METHOD: {
amqp_connection_secure_ok_t *m = (amqp_connection_secure_ok_t *) decoded;
- if (!amqp_encode_32(encoded, &offset, m->response.len)
+ if (UINT32_MAX < m->response.len
+ || !amqp_encode_32(encoded, &offset, (uint32_t)m->response.len)
|| !amqp_encode_bytes(encoded, &offset, m->response))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_TUNE_METHOD: {
amqp_connection_tune_t *m = (amqp_connection_tune_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->channel_max)) return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_32(encoded, &offset, m->frame_max)) return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_16(encoded, &offset, m->heartbeat)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_TUNE_OK_METHOD: {
amqp_connection_tune_ok_t *m = (amqp_connection_tune_ok_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->channel_max)) return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_32(encoded, &offset, m->frame_max)) return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_16(encoded, &offset, m->heartbeat)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_OPEN_METHOD: {
amqp_connection_open_t *m = (amqp_connection_open_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->virtual_host.len)
+ if (UINT8_MAX < m->virtual_host.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->virtual_host.len)
|| !amqp_encode_bytes(encoded, &offset, m->virtual_host))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->capabilities.len)
+ if (UINT8_MAX < m->capabilities.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->capabilities.len)
|| !amqp_encode_bytes(encoded, &offset, m->capabilities))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
if (m->insist) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_OPEN_OK_METHOD: {
amqp_connection_open_ok_t *m = (amqp_connection_open_ok_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->known_hosts.len)
+ if (UINT8_MAX < m->known_hosts.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->known_hosts.len)
|| !amqp_encode_bytes(encoded, &offset, m->known_hosts))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_CLOSE_METHOD: {
amqp_connection_close_t *m = (amqp_connection_close_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->reply_code)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->reply_text.len)
+ if (UINT8_MAX < m->reply_text.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->reply_text.len)
|| !amqp_encode_bytes(encoded, &offset, m->reply_text))
return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_16(encoded, &offset, m->class_id)) return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_16(encoded, &offset, m->method_id)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_CLOSE_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_BLOCKED_METHOD: {
amqp_connection_blocked_t *m = (amqp_connection_blocked_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->reason.len)
+ if (UINT8_MAX < m->reason.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->reason.len)
|| !amqp_encode_bytes(encoded, &offset, m->reason))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONNECTION_UNBLOCKED_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_CHANNEL_OPEN_METHOD: {
amqp_channel_open_t *m = (amqp_channel_open_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->out_of_band.len)
+ if (UINT8_MAX < m->out_of_band.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->out_of_band.len)
|| !amqp_encode_bytes(encoded, &offset, m->out_of_band))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CHANNEL_OPEN_OK_METHOD: {
amqp_channel_open_ok_t *m = (amqp_channel_open_ok_t *) decoded;
- if (!amqp_encode_32(encoded, &offset, m->channel_id.len)
+ if (UINT32_MAX < m->channel_id.len
+ || !amqp_encode_32(encoded, &offset, (uint32_t)m->channel_id.len)
|| !amqp_encode_bytes(encoded, &offset, m->channel_id))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CHANNEL_FLOW_METHOD: {
amqp_channel_flow_t *m = (amqp_channel_flow_t *) decoded;
bit_buffer = 0;
if (m->active) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CHANNEL_FLOW_OK_METHOD: {
amqp_channel_flow_ok_t *m = (amqp_channel_flow_ok_t *) decoded;
bit_buffer = 0;
if (m->active) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CHANNEL_CLOSE_METHOD: {
amqp_channel_close_t *m = (amqp_channel_close_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->reply_code)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->reply_text.len)
+ if (UINT8_MAX < m->reply_text.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->reply_text.len)
|| !amqp_encode_bytes(encoded, &offset, m->reply_text))
return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_16(encoded, &offset, m->class_id)) return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_16(encoded, &offset, m->method_id)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CHANNEL_CLOSE_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_ACCESS_REQUEST_METHOD: {
amqp_access_request_t *m = (amqp_access_request_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->realm.len)
+ if (UINT8_MAX < m->realm.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->realm.len)
|| !amqp_encode_bytes(encoded, &offset, m->realm))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
@@ -1367,20 +1383,22 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
if (m->write) bit_buffer |= (1 << 3);
if (m->read) bit_buffer |= (1 << 4);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_ACCESS_REQUEST_OK_METHOD: {
amqp_access_request_ok_t *m = (amqp_access_request_ok_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_EXCHANGE_DECLARE_METHOD: {
amqp_exchange_declare_t *m = (amqp_exchange_declare_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->exchange.len)
+ if (UINT8_MAX < m->exchange.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len)
|| !amqp_encode_bytes(encoded, &offset, m->exchange))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->type.len)
+ if (UINT8_MAX < m->type.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->type.len)
|| !amqp_encode_bytes(encoded, &offset, m->type))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
@@ -1394,36 +1412,40 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
int res = amqp_encode_table(encoded, &(m->arguments), &offset);
if (res < 0) return res;
}
- return offset;
+ return (int)offset;
}
case AMQP_EXCHANGE_DECLARE_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_EXCHANGE_DELETE_METHOD: {
amqp_exchange_delete_t *m = (amqp_exchange_delete_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->exchange.len)
+ if (UINT8_MAX < m->exchange.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len)
|| !amqp_encode_bytes(encoded, &offset, m->exchange))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
if (m->if_unused) bit_buffer |= (1 << 0);
if (m->nowait) bit_buffer |= (1 << 1);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_EXCHANGE_DELETE_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_EXCHANGE_BIND_METHOD: {
amqp_exchange_bind_t *m = (amqp_exchange_bind_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->destination.len)
+ if (UINT8_MAX < m->destination.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->destination.len)
|| !amqp_encode_bytes(encoded, &offset, m->destination))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->source.len)
+ if (UINT8_MAX < m->source.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->source.len)
|| !amqp_encode_bytes(encoded, &offset, m->source))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->routing_key.len)
+ if (UINT8_MAX < m->routing_key.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len)
|| !amqp_encode_bytes(encoded, &offset, m->routing_key))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
@@ -1433,21 +1455,24 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
int res = amqp_encode_table(encoded, &(m->arguments), &offset);
if (res < 0) return res;
}
- return offset;
+ return (int)offset;
}
case AMQP_EXCHANGE_BIND_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_EXCHANGE_UNBIND_METHOD: {
amqp_exchange_unbind_t *m = (amqp_exchange_unbind_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->destination.len)
+ if (UINT8_MAX < m->destination.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->destination.len)
|| !amqp_encode_bytes(encoded, &offset, m->destination))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->source.len)
+ if (UINT8_MAX < m->source.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->source.len)
|| !amqp_encode_bytes(encoded, &offset, m->source))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->routing_key.len)
+ if (UINT8_MAX < m->routing_key.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len)
|| !amqp_encode_bytes(encoded, &offset, m->routing_key))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
@@ -1457,15 +1482,16 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
int res = amqp_encode_table(encoded, &(m->arguments), &offset);
if (res < 0) return res;
}
- return offset;
+ return (int)offset;
}
case AMQP_EXCHANGE_UNBIND_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_DECLARE_METHOD: {
amqp_queue_declare_t *m = (amqp_queue_declare_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->queue.len)
+ if (UINT8_MAX < m->queue.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len)
|| !amqp_encode_bytes(encoded, &offset, m->queue))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
@@ -1479,27 +1505,31 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
int res = amqp_encode_table(encoded, &(m->arguments), &offset);
if (res < 0) return res;
}
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_DECLARE_OK_METHOD: {
amqp_queue_declare_ok_t *m = (amqp_queue_declare_ok_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->queue.len)
+ if (UINT8_MAX < m->queue.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len)
|| !amqp_encode_bytes(encoded, &offset, m->queue))
return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_32(encoded, &offset, m->message_count)) return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_32(encoded, &offset, m->consumer_count)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_BIND_METHOD: {
amqp_queue_bind_t *m = (amqp_queue_bind_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->queue.len)
+ if (UINT8_MAX < m->queue.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len)
|| !amqp_encode_bytes(encoded, &offset, m->queue))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->exchange.len)
+ if (UINT8_MAX < m->exchange.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len)
|| !amqp_encode_bytes(encoded, &offset, m->exchange))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->routing_key.len)
+ if (UINT8_MAX < m->routing_key.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len)
|| !amqp_encode_bytes(encoded, &offset, m->routing_key))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
@@ -1509,31 +1539,33 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
int res = amqp_encode_table(encoded, &(m->arguments), &offset);
if (res < 0) return res;
}
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_BIND_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_PURGE_METHOD: {
amqp_queue_purge_t *m = (amqp_queue_purge_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->queue.len)
+ if (UINT8_MAX < m->queue.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len)
|| !amqp_encode_bytes(encoded, &offset, m->queue))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
if (m->nowait) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_PURGE_OK_METHOD: {
amqp_queue_purge_ok_t *m = (amqp_queue_purge_ok_t *) decoded;
if (!amqp_encode_32(encoded, &offset, m->message_count)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_DELETE_METHOD: {
amqp_queue_delete_t *m = (amqp_queue_delete_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->queue.len)
+ if (UINT8_MAX < m->queue.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len)
|| !amqp_encode_bytes(encoded, &offset, m->queue))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
@@ -1541,33 +1573,36 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
if (m->if_empty) bit_buffer |= (1 << 1);
if (m->nowait) bit_buffer |= (1 << 2);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_DELETE_OK_METHOD: {
amqp_queue_delete_ok_t *m = (amqp_queue_delete_ok_t *) decoded;
if (!amqp_encode_32(encoded, &offset, m->message_count)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_UNBIND_METHOD: {
amqp_queue_unbind_t *m = (amqp_queue_unbind_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->queue.len)
+ if (UINT8_MAX < m->queue.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len)
|| !amqp_encode_bytes(encoded, &offset, m->queue))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->exchange.len)
+ if (UINT8_MAX < m->exchange.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len)
|| !amqp_encode_bytes(encoded, &offset, m->exchange))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->routing_key.len)
+ if (UINT8_MAX < m->routing_key.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len)
|| !amqp_encode_bytes(encoded, &offset, m->routing_key))
return AMQP_STATUS_BAD_AMQP_DATA;
{
int res = amqp_encode_table(encoded, &(m->arguments), &offset);
if (res < 0) return res;
}
- return offset;
+ return (int)offset;
}
case AMQP_QUEUE_UNBIND_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_QOS_METHOD: {
amqp_basic_qos_t *m = (amqp_basic_qos_t *) decoded;
@@ -1576,18 +1611,20 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
bit_buffer = 0;
if (m->global) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_QOS_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_CONSUME_METHOD: {
amqp_basic_consume_t *m = (amqp_basic_consume_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->queue.len)
+ if (UINT8_MAX < m->queue.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len)
|| !amqp_encode_bytes(encoded, &offset, m->queue))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->consumer_tag.len)
+ if (UINT8_MAX < m->consumer_tag.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len)
|| !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
@@ -1600,88 +1637,100 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
int res = amqp_encode_table(encoded, &(m->arguments), &offset);
if (res < 0) return res;
}
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_CONSUME_OK_METHOD: {
amqp_basic_consume_ok_t *m = (amqp_basic_consume_ok_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->consumer_tag.len)
+ if (UINT8_MAX < m->consumer_tag.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len)
|| !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_CANCEL_METHOD: {
amqp_basic_cancel_t *m = (amqp_basic_cancel_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->consumer_tag.len)
+ if (UINT8_MAX < m->consumer_tag.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len)
|| !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
if (m->nowait) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_CANCEL_OK_METHOD: {
amqp_basic_cancel_ok_t *m = (amqp_basic_cancel_ok_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->consumer_tag.len)
+ if (UINT8_MAX < m->consumer_tag.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len)
|| !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_PUBLISH_METHOD: {
amqp_basic_publish_t *m = (amqp_basic_publish_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->exchange.len)
+ if (UINT8_MAX < m->exchange.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len)
|| !amqp_encode_bytes(encoded, &offset, m->exchange))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->routing_key.len)
+ if (UINT8_MAX < m->routing_key.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len)
|| !amqp_encode_bytes(encoded, &offset, m->routing_key))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
if (m->mandatory) bit_buffer |= (1 << 0);
if (m->immediate) bit_buffer |= (1 << 1);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_RETURN_METHOD: {
amqp_basic_return_t *m = (amqp_basic_return_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->reply_code)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->reply_text.len)
+ if (UINT8_MAX < m->reply_text.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->reply_text.len)
|| !amqp_encode_bytes(encoded, &offset, m->reply_text))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->exchange.len)
+ if (UINT8_MAX < m->exchange.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len)
|| !amqp_encode_bytes(encoded, &offset, m->exchange))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->routing_key.len)
+ if (UINT8_MAX < m->routing_key.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len)
|| !amqp_encode_bytes(encoded, &offset, m->routing_key))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_DELIVER_METHOD: {
amqp_basic_deliver_t *m = (amqp_basic_deliver_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->consumer_tag.len)
+ if (UINT8_MAX < m->consumer_tag.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len)
|| !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_64(encoded, &offset, m->delivery_tag)) return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
if (m->redelivered) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->exchange.len)
+ if (UINT8_MAX < m->exchange.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len)
|| !amqp_encode_bytes(encoded, &offset, m->exchange))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->routing_key.len)
+ if (UINT8_MAX < m->routing_key.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len)
|| !amqp_encode_bytes(encoded, &offset, m->routing_key))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_GET_METHOD: {
amqp_basic_get_t *m = (amqp_basic_get_t *) decoded;
if (!amqp_encode_16(encoded, &offset, m->ticket)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->queue.len)
+ if (UINT8_MAX < m->queue.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len)
|| !amqp_encode_bytes(encoded, &offset, m->queue))
return AMQP_STATUS_BAD_AMQP_DATA;
bit_buffer = 0;
if (m->no_ack) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_GET_OK_METHOD: {
amqp_basic_get_ok_t *m = (amqp_basic_get_ok_t *) decoded;
@@ -1689,21 +1738,24 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
bit_buffer = 0;
if (m->redelivered) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->exchange.len)
+ if (UINT8_MAX < m->exchange.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len)
|| !amqp_encode_bytes(encoded, &offset, m->exchange))
return AMQP_STATUS_BAD_AMQP_DATA;
- if (!amqp_encode_8(encoded, &offset, m->routing_key.len)
+ if (UINT8_MAX < m->routing_key.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len)
|| !amqp_encode_bytes(encoded, &offset, m->routing_key))
return AMQP_STATUS_BAD_AMQP_DATA;
if (!amqp_encode_32(encoded, &offset, m->message_count)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_GET_EMPTY_METHOD: {
amqp_basic_get_empty_t *m = (amqp_basic_get_empty_t *) decoded;
- if (!amqp_encode_8(encoded, &offset, m->cluster_id.len)
+ if (UINT8_MAX < m->cluster_id.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)m->cluster_id.len)
|| !amqp_encode_bytes(encoded, &offset, m->cluster_id))
return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_ACK_METHOD: {
amqp_basic_ack_t *m = (amqp_basic_ack_t *) decoded;
@@ -1711,7 +1763,7 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
bit_buffer = 0;
if (m->multiple) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_REJECT_METHOD: {
amqp_basic_reject_t *m = (amqp_basic_reject_t *) decoded;
@@ -1719,24 +1771,24 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
bit_buffer = 0;
if (m->requeue) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_RECOVER_ASYNC_METHOD: {
amqp_basic_recover_async_t *m = (amqp_basic_recover_async_t *) decoded;
bit_buffer = 0;
if (m->requeue) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_RECOVER_METHOD: {
amqp_basic_recover_t *m = (amqp_basic_recover_t *) decoded;
bit_buffer = 0;
if (m->requeue) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_RECOVER_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_BASIC_NACK_METHOD: {
amqp_basic_nack_t *m = (amqp_basic_nack_t *) decoded;
@@ -1745,35 +1797,35 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
if (m->multiple) bit_buffer |= (1 << 0);
if (m->requeue) bit_buffer |= (1 << 1);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_TX_SELECT_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_TX_SELECT_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_TX_COMMIT_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_TX_COMMIT_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_TX_ROLLBACK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_TX_ROLLBACK_OK_METHOD: {
- return offset;
+ return (int)offset;
}
case AMQP_CONFIRM_SELECT_METHOD: {
amqp_confirm_select_t *m = (amqp_confirm_select_t *) decoded;
bit_buffer = 0;
if (m->nowait) bit_buffer |= (1 << 0);
if (!amqp_encode_8(encoded, &offset, bit_buffer)) return AMQP_STATUS_BAD_AMQP_DATA;
- return offset;
+ return (int)offset;
}
case AMQP_CONFIRM_SELECT_OK_METHOD: {
- return offset;
+ return (int)offset;
}
default: return AMQP_STATUS_UNKNOWN_METHOD;
}
@@ -1805,29 +1857,31 @@ int amqp_encode_properties(uint16_t class_id,
switch (class_id) {
case 10: {
- return offset;
+ return (int)offset;
}
case 20: {
- return offset;
+ return (int)offset;
}
case 30: {
- return offset;
+ return (int)offset;
}
case 40: {
- return offset;
+ return (int)offset;
}
case 50: {
- return offset;
+ return (int)offset;
}
case 60: {
amqp_basic_properties_t *p = (amqp_basic_properties_t *) decoded;
if (flags & AMQP_BASIC_CONTENT_TYPE_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->content_type.len)
+ if (UINT8_MAX < p->content_type.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->content_type.len)
|| !amqp_encode_bytes(encoded, &offset, p->content_type))
return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_CONTENT_ENCODING_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->content_encoding.len)
+ if (UINT8_MAX < p->content_encoding.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->content_encoding.len)
|| !amqp_encode_bytes(encoded, &offset, p->content_encoding))
return AMQP_STATUS_BAD_AMQP_DATA;
}
@@ -1844,22 +1898,26 @@ int amqp_encode_properties(uint16_t class_id,
if (!amqp_encode_8(encoded, &offset, p->priority)) return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_CORRELATION_ID_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->correlation_id.len)
+ if (UINT8_MAX < p->correlation_id.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->correlation_id.len)
|| !amqp_encode_bytes(encoded, &offset, p->correlation_id))
return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_REPLY_TO_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->reply_to.len)
+ if (UINT8_MAX < p->reply_to.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->reply_to.len)
|| !amqp_encode_bytes(encoded, &offset, p->reply_to))
return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_EXPIRATION_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->expiration.len)
+ if (UINT8_MAX < p->expiration.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->expiration.len)
|| !amqp_encode_bytes(encoded, &offset, p->expiration))
return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_MESSAGE_ID_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->message_id.len)
+ if (UINT8_MAX < p->message_id.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->message_id.len)
|| !amqp_encode_bytes(encoded, &offset, p->message_id))
return AMQP_STATUS_BAD_AMQP_DATA;
}
@@ -1867,32 +1925,36 @@ int amqp_encode_properties(uint16_t class_id,
if (!amqp_encode_64(encoded, &offset, p->timestamp)) return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_TYPE_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->type.len)
+ if (UINT8_MAX < p->type.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->type.len)
|| !amqp_encode_bytes(encoded, &offset, p->type))
return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_USER_ID_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->user_id.len)
+ if (UINT8_MAX < p->user_id.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->user_id.len)
|| !amqp_encode_bytes(encoded, &offset, p->user_id))
return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_APP_ID_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->app_id.len)
+ if (UINT8_MAX < p->app_id.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->app_id.len)
|| !amqp_encode_bytes(encoded, &offset, p->app_id))
return AMQP_STATUS_BAD_AMQP_DATA;
}
if (flags & AMQP_BASIC_CLUSTER_ID_FLAG) {
- if (!amqp_encode_8(encoded, &offset, p->cluster_id.len)
+ if (UINT8_MAX < p->cluster_id.len
+ || !amqp_encode_8(encoded, &offset, (uint8_t)p->cluster_id.len)
|| !amqp_encode_bytes(encoded, &offset, p->cluster_id))
return AMQP_STATUS_BAD_AMQP_DATA;
}
- return offset;
+ return (int)offset;
}
case 90: {
- return offset;
+ return (int)offset;
}
case 85: {
- return offset;
+ return (int)offset;
}
default: return AMQP_STATUS_UNKNOWN_CLASS;
}