From 616a8987cb728cac4df8c8cb19e171050a90f0ad Mon Sep 17 00:00:00 2001
From: Johannes Schriewer <hallo@dunkelstern.de>
Date: Sat, 28 Jul 2018 20:41:48 +0200
Subject: [PATCH] Bugfix: While testing decoding some bugs appeared

---
 src/packet.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/packet.c b/src/packet.c
index 1b0eb39..5b2c5f0 100644
--- a/src/packet.c
+++ b/src/packet.c
@@ -62,14 +62,15 @@ void free_MQTTPacket(MQTTPacket *packet) {
 
 
 uint16_t variable_length_int_decode(Buffer *buffer) {
-    uint16_t result = 0;
-    while (buffer->data[buffer->position] & 0x80) {
-        result *= 128;
-        result += buffer->data[buffer->position] & 0x7f;
-        buffer->position++;
+    uint16_t result = buffer->data[buffer->position++] & 0x7f;
+    uint16_t shift = 7;
+    while (buffer->data[buffer->position - 1] & 0x80) {
+        result += (buffer->data[buffer->position] & 0x7f) << shift;
+        shift += 7;
         if (buffer_eof(buffer)) {
             break; // bail out, buffer exhausted
         }
+        buffer->position++;
     }
 
     return result;
@@ -87,8 +88,9 @@ char *utf8_string_decode(Buffer *buffer) {
     }
     buffer->position += 2;
 
-    result = malloc(sz);
+    result = malloc(sz + 1);
     buffer_copy_out(buffer, result, sz);
+    result[sz] = '\0';
     return result;
 }