diff --git a/ChangeLog.txt b/ChangeLog.txt index 2660dc8b376ab787ee171ecf0752dbad7027f373..a64e754888b17348731a1c4235b5872fc18a4f59 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -5,6 +5,9 @@ Broker: - Fix `max_queued_message 0` stopping clients from receiving messages. Closes #2879. +Apps: +- Fix `mosquitto_passwd -U` backup file creation. Closes #2873. + 2.0.16 - 2023-08-16 =================== diff --git a/apps/mosquitto_passwd/mosquitto_passwd.c b/apps/mosquitto_passwd/mosquitto_passwd.c index 262f89cf66a3dee9a33dc5c520a5308fc8653e9d..a4d271a3923decc324980514e621c94d33e5b424 100644 --- a/apps/mosquitto_passwd/mosquitto_passwd.c +++ b/apps/mosquitto_passwd/mosquitto_passwd.c @@ -629,13 +629,14 @@ int main(int argc, char *argv[]) return 1; } - backup_file = malloc((size_t)strlen(password_file)+strlen(".backup.XXXXXX")); + size_t len = strlen(password_file) + strlen(".backup.XXXXXX") + 1; + backup_file = malloc(len); if(!backup_file){ fprintf(stderr, "Error: Out of memory.\n"); free(password_file); return 1; } - snprintf(backup_file, strlen(password_file)+5, "%s.backup.XXXXXX", password_file); + snprintf(backup_file, len, "%s.backup.XXXXXX", password_file); free(password_file); password_file = NULL;