Skip to content

Commit 9c8d2d9

Browse files
1010101001010101jukkar
authored andcommitted
net/mqtt: Use uint32_t for Remaining Length encoding/decoding
This patch updates the Remaining Length field from uint16_t to uint32_t. The MQTT std specifies that this field must be unsigned 4 bytes length. Change-Id: I319d0745c673faece4bbd4db29b1bafad78ac199 Signed-off-by: Flavio Santes <[email protected]>
1 parent 5405057 commit 9c8d2d9

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

subsys/net/lib/mqtt/mqtt_pkt.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ int compute_rlen_size(uint16_t *size, uint32_t len)
112112
*
113113
* @retval 0 always
114114
*/
115-
static int rlen_encode(uint8_t *buf, int len)
115+
static int rlen_encode(uint8_t *buf, uint32_t len)
116116
{
117117
uint8_t encoded;
118118
uint8_t i;
@@ -144,11 +144,11 @@ static int rlen_encode(uint8_t *buf, int len)
144144
* @retval 0 on success
145145
* @retval -ENOMEM if size < 4
146146
*/
147-
static int rlen_decode(uint16_t *rlen, uint16_t *rlen_size,
147+
static int rlen_decode(uint32_t *rlen, uint16_t *rlen_size,
148148
uint8_t *buf, uint16_t size)
149149
{
150-
uint16_t value = 0;
151-
uint16_t mult = 1;
150+
uint32_t value = 0;
151+
uint32_t mult = 1;
152152
uint16_t i = 0;
153153
uint8_t encoded;
154154

@@ -452,9 +452,9 @@ int mqtt_unpack_connect(uint8_t *buf, uint16_t length,
452452
{
453453
uint8_t user_name_flag;
454454
uint8_t password_flag;
455-
uint16_t payload_len;
456455
uint16_t rlen_size;
457456
uint16_t val_u16;
457+
uint32_t rlen;
458458
uint8_t offset;
459459
int rc;
460460

@@ -472,7 +472,7 @@ int mqtt_unpack_connect(uint8_t *buf, uint16_t length,
472472
return -EINVAL;
473473
}
474474

475-
rc = rlen_decode(&payload_len, &rlen_size, buf + PACKET_TYPE_SIZE,
475+
rc = rlen_decode(&rlen, &rlen_size, buf + PACKET_TYPE_SIZE,
476476
length - PACKET_TYPE_SIZE);
477477
if (rc != 0) {
478478
return rc;
@@ -711,7 +711,7 @@ int mqtt_unpack_subscribe(uint8_t *buf, uint16_t length, uint16_t *pkt_id,
711711
{
712712
uint16_t rmlen_size;
713713
uint16_t val_u16;
714-
uint16_t rmlen;
714+
uint32_t rmlen;
715715
uint16_t offset;
716716
uint8_t i;
717717
int rc;
@@ -780,7 +780,7 @@ int mqtt_unpack_suback(uint8_t *buf, uint16_t length, uint16_t *pkt_id,
780780
uint16_t rlen_size;
781781
enum mqtt_qos qos;
782782
uint16_t val_u16;
783-
uint16_t rlen;
783+
uint32_t rlen;
784784
uint16_t offset;
785785
uint8_t i;
786786
int rc;
@@ -899,8 +899,8 @@ int mqtt_unpack_publish(uint8_t *buf, uint16_t length,
899899
{
900900
uint16_t rmlen_size;
901901
uint16_t val_u16;
902-
uint16_t rmlen;
903902
uint16_t offset;
903+
uint32_t rmlen;
904904
int rc;
905905

906906
if (buf[0] >> 4 != MQTT_PUBLISH) {

0 commit comments

Comments
 (0)