Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

phildubach
Copy link

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