Skip to content

umqtt.simple: Reject short CONNACK in connect. - #1149

Open
pablogventura wants to merge 2 commits into
micropython:masterfrom
pablogventura:umqtt-connect-short-connack
Open

umqtt.simple: Reject short CONNACK in connect.#1149
pablogventura wants to merge 2 commits into
micropython:masterfrom
pablogventura:umqtt-connect-short-connack

Conversation

@pablogventura

Copy link
Copy Markdown
Contributor

Summary

  • Fixes IndexError: bytes index out of range #1056: connect() used to assert on resp[0] / resp[1] after sock.read(4). A short or missing CONNACK (b"" or None on timeout) raised IndexError instead of an MQTT error.
  • Raise MQTTException(-1) when CONNACK is missing, short, or not a 4-byte CONNACK. Broker return codes 1-5 are unchanged (MQTTException(resp[3])).

Test plan

  • Unix micropython/umqtt.simple/test_umqtt_simple.py: valid CONNACK, empty read, and None read.

Signed-off-by: Pablo Ventura <pablogventura@gmail.com>
@pablogventura

Copy link
Copy Markdown
Contributor Author

simple.mpy (mpy-cross, compiled as simple.py):

Version bytes vs master
master 2515 -
this commit 2531 +16

Signed-off-by: Pablo Ventura <pablogventura@gmail.com>
@pablogventura

Copy link
Copy Markdown
Contributor Author

Follow-up: reuse a single raise MQTTException(r) for short/malformed CONNACK (r = -1) and broker codes. Same contract.

simple.mpy (mpy-cross, compiled as simple.py):

Version bytes vs master
master 2515 -
previous on this branch 2531 +16
this commit 2526 +11

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IndexError: bytes index out of range

1 participant