Skip to content

Commit

Permalink
Fix: coredump, dereference null variable
Browse files Browse the repository at this point in the history
  • Loading branch information
alfred2g committed Sep 18, 2023
1 parent 9fc57a1 commit 84c714a
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions source/v5/mqtt5_to_mqtt3_adapter.c
Original file line number Diff line number Diff line change
Expand Up @@ -2184,10 +2184,14 @@ static void s_aws_mqtt5_to_mqtt3_adapter_subscribe_completion_fn(
const struct aws_mqtt5_packet_suback_view *suback,
int error_code,
void *complete_ctx) {
(void)suback;

struct aws_mqtt5_to_mqtt3_adapter_operation_subscribe *subscribe_op = complete_ctx;
struct aws_mqtt_client_connection_5_impl *adapter = subscribe_op->base.adapter;
int reason_code_count = 0;

if (suback != NULL) {
reason_code_count = suback->reason_code_count;
}

if (subscribe_op->on_suback != NULL) {
AWS_LOGF_DEBUG(
Expand All @@ -2197,7 +2201,11 @@ static void s_aws_mqtt5_to_mqtt3_adapter_subscribe_completion_fn(

struct aws_byte_cursor topic_filter;
AWS_ZERO_STRUCT(topic_filter);

enum aws_mqtt_qos granted_qos = AWS_MQTT_QOS_AT_MOST_ONCE;
if (suback == NULL) {
granted_qos = AWS_MQTT_QOS_FAILURE;
}

size_t subscription_count = aws_array_list_length(&subscribe_op->subscriptions);
if (subscription_count > 0) {
Expand All @@ -2207,7 +2215,7 @@ static void s_aws_mqtt5_to_mqtt3_adapter_subscribe_completion_fn(
topic_filter = record->subscription_view.topic_filter;
}

if (suback->reason_code_count > 0) {
if ( reason_code_count > 0) {
granted_qos = s_convert_mqtt5_suback_reason_code_to_mqtt3_granted_qos(suback->reason_codes[0]);
}

Expand All @@ -2227,22 +2235,22 @@ static void s_aws_mqtt5_to_mqtt3_adapter_subscribe_completion_fn(
(void *)adapter);

AWS_VARIABLE_LENGTH_ARRAY(
struct aws_mqtt_topic_subscription, multi_sub_subscription_buf, suback->reason_code_count);
struct aws_mqtt_topic_subscription, multi_sub_subscription_buf, reason_code_count);
AWS_VARIABLE_LENGTH_ARRAY(
struct aws_mqtt_topic_subscription *, multi_sub_subscription_ptr_buf, suback->reason_code_count);
struct aws_mqtt_topic_subscription *, multi_sub_subscription_ptr_buf, reason_code_count);
struct aws_mqtt_topic_subscription *subscription_ptr =
(struct aws_mqtt_topic_subscription *)multi_sub_subscription_buf;

struct aws_array_list multi_sub_list;
aws_array_list_init_static(
&multi_sub_list,
multi_sub_subscription_ptr_buf,
suback->reason_code_count,
reason_code_count,
sizeof(struct aws_mqtt_topic_subscription *));

size_t subscription_count = aws_array_list_length(&subscribe_op->subscriptions);

for (size_t i = 0; i < suback->reason_code_count; ++i) {
for (size_t i = 0; i < reason_code_count; ++i) {
struct aws_mqtt_topic_subscription *subscription = subscription_ptr + i;
AWS_ZERO_STRUCT(*subscription);

Expand Down

0 comments on commit 84c714a

Please sign in to comment.