Skip to content

Fix crash handling publish with invalid predef topic ID.#9

Open
phildubach wants to merge 3 commits into
MichalFoksa:masterfrom
phildubach:master
Open

Fix crash handling publish with invalid predef topic ID.#9
phildubach wants to merge 3 commits into
MichalFoksa:masterfrom
phildubach:master

Conversation

@phildubach

Copy link
Copy Markdown

A client publishing with an invalid predefined topic ID would crash the broker.
This is caused by code added for expanding predefined topic templates.
Expansion was not attempted if the original topic lookup failed, but code further down unconditionally tried to compare the original topic string (which is NULL in this case) with the expanded topic string (also NULL), resulting in a segmentation fault.
Simply moving the code inside the conditional block solves the problem by falling through with topicName being NULL, which results in a proper PUBACK with the error code MQTTS_RC_REJECTED_INVALID_TOPIC_ID.

Phil Dubach added 3 commits April 5, 2017 15:05
When subscribing to a named topic check for existing registrations of
the topic and reuse the existing topic ID on success, rather than
blindly registering the topic. This avoids duplicate registrations of
the same topic with different topic IDs.
If a message gets queued for a client, because the maximum number of
inflight messages has been reached, the server should attempt to dequeue
and send that message whenever a publish is completed. Copy the relevant
code from the plain MQTT handlePubacks and handlePubcomps functions.
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.

1 participant