Commit aa87dfb69e1b839f75132330b53cbc3600c491f7
1 parent
5856733c
Comply with protocol spec to check for non-0 packet ID
[MQTT-2.3.1-1]
Showing
1 changed file
with
15 additions
and
0 deletions
mqttpacket.cpp
| ... | ... | @@ -425,6 +425,11 @@ void MqttPacket::handleSubscribe() |
| 425 | 425 | |
| 426 | 426 | uint16_t packet_id = readTwoBytesToUInt16(); |
| 427 | 427 | |
| 428 | + if (packet_id == 0) | |
| 429 | + { | |
| 430 | + throw ProtocolError("Packet ID 0 when subscribing is invalid."); // [MQTT-2.3.1-1] | |
| 431 | + } | |
| 432 | + | |
| 428 | 433 | Authentication &authentication = *ThreadAuth::getAuth(); |
| 429 | 434 | |
| 430 | 435 | std::list<char> subs_reponse_codes; |
| ... | ... | @@ -478,6 +483,11 @@ void MqttPacket::handleUnsubscribe() |
| 478 | 483 | |
| 479 | 484 | uint16_t packet_id = readTwoBytesToUInt16(); |
| 480 | 485 | |
| 486 | + if (packet_id == 0) | |
| 487 | + { | |
| 488 | + throw ProtocolError("Packet ID 0 when unsubscribing is invalid."); // [MQTT-2.3.1-1] | |
| 489 | + } | |
| 490 | + | |
| 481 | 491 | while (remainingAfterPos() > 0) |
| 482 | 492 | { |
| 483 | 493 | uint16_t topicLength = readTwoBytesToUInt16(); |
| ... | ... | @@ -534,6 +544,11 @@ void MqttPacket::handlePublish() |
| 534 | 544 | packet_id_pos = pos; |
| 535 | 545 | packet_id = readTwoBytesToUInt16(); |
| 536 | 546 | |
| 547 | + if (packet_id == 0) | |
| 548 | + { | |
| 549 | + throw ProtocolError("Packet ID 0 when publishing is invalid."); // [MQTT-2.3.1-1] | |
| 550 | + } | |
| 551 | + | |
| 537 | 552 | if (qos == 1) |
| 538 | 553 | { |
| 539 | 554 | PubAck pubAck(packet_id); | ... | ... |