From 77c86c2f52db0ed0cc336014d9c2326e3f044ba3 Mon Sep 17 00:00:00 2001 From: Johannes Schriewer Date: Tue, 31 Jul 2018 00:33:25 +0200 Subject: [PATCH] Bugfix: Decoding for QoS 0 publish was wrong too Re #19 --- src/packet.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/packet.c b/src/packet.c index 28cc403..9f3a50c 100644 --- a/src/packet.c +++ b/src/packet.c @@ -205,16 +205,17 @@ bool decode_publish(Buffer *buffer, PublishPayload *payload, size_t sz) { payload->duplicate = ((flags & 0x08) > 0); payload->topic = utf8_string_decode(buffer); - payload->packet_id = - (buffer->data[buffer->position] << 8) - + buffer->data[buffer->position + 1]; - buffer->position += 2; - + if (payload->qos != MQTT_QOS_0) { + payload->packet_id = + (buffer->data[buffer->position] << 8) + + buffer->data[buffer->position + 1]; + buffer->position += 2; + } + size_t len = sz - (buffer->position - start_pos) + 1; if (len > 1) { - payload->message = malloc(len); + payload->message = calloc(1, len); memcpy(payload->message, buffer->data + buffer->position, len - 1); - payload->message[len] = '\0'; buffer->position += len - 1; }