Version 2.0.16 released.

Version 2.0.16 of Mosquitto has been released. This is a security and bugfix release.

Security

  • CVE-2023-28366: Fix memory leak in broker when clients send multiple QoS 2 messages with the same message ID, but then never respond to the PUBREC commands.
  • CVE-2023-0809: Fix excessive memory being allocated based on malicious initial packets that are not CONNECT packets.
  • CVE-2023-3592: Fix memory leak when clients send v5 CONNECT packets with a will message that contains invalid property types.
  • Broker will now reject Will messages that attempt to publish to $CONTROL/.
  • Broker now validates usernames provided in a TLS certificate or TLS-PSK identity are valid UTF-8.
  • Fix potential crash when loading invalid persistence file.
  • Library will no longer allow single level wildcard certificates, e.g. *.com

Broker

  • Fix $SYS messages being expired after 60 seconds and hence unchanged values disappearing.
  • Fix some retained topic memory not being cleared immediately after used.
  • Fix error handling related to the bind_interface option.
  • Fix std* files not being redirected when daemonising, when built with assertions removed. Closes #2708.
  • Fix default settings incorrectly allowing TLS v1.1. Closes #2722.
  • Use line buffered mode for stdout. Closes #2354. Closes #2749.
  • Fix bridges with non-matching cleansession/local_cleansession being expired on start after restoring from persistence. Closes #2634.
  • Fix connections being limited to 2048 on Windows. The limit is now 8192, where supported. Closes #2732.
  • Broker will log warnings if sensitive files are world readable/writable, or if the owner/group is not the same as the user/group the broker is running as. In future versions the broker will refuse to open these files.
  • mosquitto_memcmp_const is now more constant time.
  • Only register with DLT if DLT logging is enabled.
  • Fix any possible case where a json string might be incorrectly loaded. This could have caused a crash if a textname or textdescription field of a role was not a string, when loading the dynsec config from file only.
  • Dynsec plugin will not allow duplicate clients/groups/roles when loading config from file, which matches the behaviour for when creating them.
  • Fix heap overflow when reading corrupt config with "log_dest file".

Client library

  • Use CLOCK_BOOTTIME when available, to keep track of time. This solves the problem of the client OS sleeping and the client hence not being able to calculate the actual time for keepalive purposes. Closes #2760.
  • Fix default settings incorrectly allowing TLS v1.1. Closes #2722.
  • Fix high CPU use on slow TLS connect. Closes #2794.

Clients

  • Fix incorrect topic-alias property value in mosquitto_sub json output.
  • Fix confusing message on TLS certificate verification. Closes #2746.

Apps

  • mosquitto_passwd uses mkstemp() for backup files.
  • mosquitto_ctrl dynsec init will refuse to overwrite an existing file, without a race-condition.

Version 2.0.17 released.

Version 2.0.17 of Mosquitto has been released. This is a bugfix release.

Broker: - Fix max_queued_messages 0 stopping clients from receiving messages. Closes #2879. - Fix max_inflight_messages not being set correctly. Closes #2876.

Apps: - Fix mosquitto_passwd -U backup file creation. Closes #2873.


Version 2.0.15 released.

Versions 2.0.15 of Mosquitto has been released. This is a security and bugfix release.

Security

  • Deleting the group configured as the anonymous group in the Dynamic Security plugin, would leave a dangling pointer that could lead to a single crash. This is considered a minor issue - only administrative users should have access to dynsec, the impact on availability is one-off, and there is no associated loss of data. It is now forbidden to delete the group configured as the anonymous group.

Broker

  • Fix memory leak when a plugin modifies the topic of a message in MOSQ_EVT_MESSAGE.
  • Fix bridge restart_timeout not being honoured.
  • Fix potential memory leaks if a plugin modifies the message in the MOSQ_EVT_MESSAGE event.
  • Fix unused flags in CONNECT command being forced to be 0, which is not required for MQTT v3.1. Closes #2522.
  • Improve documentation of persistent_client_expiration option. Closes #2404.
  • Add clients to session expiry check list when restarting and reloading from persistence. Closes #2546.
  • Fix bridges not sending failure notification messages to the local broker if the remote bridge connection fails. Closes #2467. Closes #1488.
  • Fix some PUBLISH messages not being counted in $SYS stats. Closes #2448.
  • Fix incorrect return code being sent in DISCONNECT when a client session is taken over. Closes #2607.
  • Fix confusing "out of memory" error when a client is kicked in the dynamic security plugin. Closes #2525.
  • Fix confusing error message when dynamic security config file was a directory. Closes #2520.
  • Fix bridge queued messages not being persisted when local_cleansession is set to false and cleansession is set to true. Closes #2604.
  • Dynamic security: Fix modifyClient and modifyGroup commands to not modify the client/group if a new group/client being added is not valid. Closes #2598.
  • Dynamic security: Fix the plugin being able to be loaded twice. Currently only a single plugin can interact with a unique $CONTROL topic. Using multiple instances of the plugin would produce duplicate entries in the config file. Closes #2601. Closes #2470.
  • Fix case where expired messages were causing queued messages not to be delivered. Closes #2609.
  • Fix websockets not passing on the X-Forwarded-For header.

Client library

  • Fix threads library detection on Windows under cmake. Bumps the minimum cmake version to 3.1, which is still ancient.
  • Fix use of MOSQ_OPT_TLS_ENGINE being unable to be used due to the openssl ctx not being initialised until starting to connect. Closes #2537.
  • Fix incorrect use of SSL_connect. Closes #2594.
  • Don't set SIGPIPE to ignore, use MSG_NOSIGNAL instead. Closes #2564.
  • Add documentation of struct mosquitto_message to header. Closes #2561.
  • Fix documentation omission around mosquitto_reinitialise. Closes #2489.
  • Fix use of MOSQ_OPT_SSL_CTX when used in conjunction with MOSQ_OPT_SSL_CTX_DEFAULTS. Closes #2463.
  • Fix failure to close thread in some situations. Closes #2545.

Clients

  • Fix mosquitto_pub incorrectly reusing topic aliases when reconnecting. Closes #2494.

Apps

  • Fix -o not working in mosquitto_ctrl, and typo in related documentation. Closes #2471.

Version 2.0.14 released.

Versions 2.0.14 of Mosquitto has been released. This is a bugfix release.

Broker

  • Fix bridge not respecting receive-maximum when reconnecting with MQTT v5.

Client library

  • Fix mosquitto_topic_matches_sub2() not using the length parameters. Closes #2364.
  • Fix incorrect subscribe_callback in mosquittopp.h. Closes #2367.