diff --git a/reg-tests/converter/mqtt.vtc b/reg-tests/converter/mqtt.vtc index 59818246a..ea2cbb4f8 100644 --- a/reg-tests/converter/mqtt.vtc +++ b/reg-tests/converter/mqtt.vtc @@ -9,9 +9,9 @@ server s1 { sendhex "20020000" close - # MQTT 3.1.1 CONNECT packet (id: test_sub - username: test - passwd: passwd) + # MQTT 3.1.1 CONNECT packet (id: - username: test - passwd: passwd) accept - recv 36 + recv 28 sendhex "20020000" close @@ -120,8 +120,8 @@ client c1_311_1 -connect ${h1_fe1_sock} { } -run client c1_311_2 -connect ${h1_fe1_sock} { - # Valid MQTT 3.1.1 CONNECT packet (id: test_sub - username: test - passwd: passwd) - sendhex "102200044d51545404c2003c0008746573745f7375620004746573740006706173737764" + # Valid MQTT 3.1.1 CONNECT packet (id: - username: test - passwd: passwd) + sendhex "101a00044d51545404c2003c00000004746573740006706173737764" recv 4 expect_close } -run diff --git a/src/mqtt.c b/src/mqtt.c index 8a6b6a065..662420121 100644 --- a/src/mqtt.c +++ b/src/mqtt.c @@ -291,7 +291,7 @@ static inline struct ist mqtt_read_string(struct ist parser, struct ist *str) uint16_t len = 0; /* read and compute the string length */ - if (istlen(parser) <= 2) + if (istlen(parser) < 2) goto error; parser = mqtt_read_2byte_int(parser, &len); @@ -862,7 +862,7 @@ static int mqtt_parse_connect(struct ist parser, struct mqtt_pkt *mpkt) */ /* read client identifier */ parser = mqtt_read_string(parser, &mpkt->data.connect.payload.client_identifier); - if (!isttest(parser) || !istlen(mpkt->data.connect.payload.client_identifier)) + if (!isttest(parser)) goto end; /* read Will Properties, for MQTT v5 only