From 2b04d177c76728a5a389a08a4a9a78238549a13a Mon Sep 17 00:00:00 2001 From: Laurent Louf Date: Fri, 3 May 2019 12:05:29 +0200 Subject: [PATCH 1/2] Add a check when publishing data to verify that if some data length is set, data pointer cannot be NULL, in which case an error is returned. Signed-off-by: Marius Vikhammer --- lib/mqtt_msg.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/mqtt_msg.c b/lib/mqtt_msg.c index 05ffa19..1d67119 100644 --- a/lib/mqtt_msg.c +++ b/lib/mqtt_msg.c @@ -430,6 +430,10 @@ mqtt_message_t *mqtt_msg_publish(mqtt_connection_t *connection, const char *topi return fail_message(connection); } + if (data == NULL && data_length > 0) { + return fail_message(connection); + } + if (qos > 0) { if ((*message_id = append_message_id(connection, 0)) == 0) { return fail_message(connection); From 2e0e93a2d37a2a082e889b99911011f000274402 Mon Sep 17 00:00:00 2001 From: Laurent Louf Date: Fri, 3 May 2019 12:06:46 +0200 Subject: [PATCH 2/2] Add a check when publishing data to be able to publish a message without data without crashing. Signed-off-by: Marius Vikhammer Merges https://github.com/espressif/esp-mqtt/pull/117 --- lib/mqtt_msg.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/mqtt_msg.c b/lib/mqtt_msg.c index 1d67119..a39a3bd 100644 --- a/lib/mqtt_msg.c +++ b/lib/mqtt_msg.c @@ -449,8 +449,11 @@ mqtt_message_t *mqtt_msg_publish(mqtt_connection_t *connection, const char *topi connection->message.length = connection->buffer_length; connection->message.fragmented_msg_total_length = data_length + connection->message.fragmented_msg_data_offset; } else { - memcpy(connection->buffer + connection->message.length, data, data_length); - connection->message.length += data_length; + if (data != NULL) + { + memcpy(connection->buffer + connection->message.length, data, data_length); + connection->message.length += data_length; + } connection->message.fragmented_msg_total_length = 0; } return fini_message(connection, MQTT_MSG_TYPE_PUBLISH, 0, qos, retain);