From 9c4b9a031173e4a8926235c36212324329b76932 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Fri, 15 Jan 2021 12:30:42 +0000 Subject: [PATCH] ctrl: Error if new passwords don't match. Produce an error when requesting a new password if both attempts do not match. Closes #2011. Thanks to Willem Eradus. --- ChangeLog.txt | 2 ++ apps/mosquitto_ctrl/dynsec.c | 3 +-- apps/mosquitto_ctrl/dynsec_client.c | 5 ++++- apps/mosquitto_passwd/get_password.c | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index fc443ff1..fa5c44b4 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,8 @@ Broker: Apps: - Allow command line arguments to override config file options in mosquitto_ctrl. Closes #2010. +- mosquitto_ctrl: produce an error when requesting a new password if both + attempts do not match. Closes #2011. 2.0.5 - 2021-01-11 ================== diff --git a/apps/mosquitto_ctrl/dynsec.c b/apps/mosquitto_ctrl/dynsec.c index 796207e6..53968ab7 100644 --- a/apps/mosquitto_ctrl/dynsec.c +++ b/apps/mosquitto_ctrl/dynsec.c @@ -720,9 +720,8 @@ int dynsec_init(int argc, char *argv[]) snprintf(verify_prompt, sizeof(verify_prompt), "Reenter password for %s: ", admin_user); rc = get_password(prompt, verify_prompt, false, password, sizeof(password)); if(rc){ - fprintf(stderr, "Error getting password.\n"); mosquitto_lib_cleanup(); - return 1; + return -1; } admin_password = password; } diff --git a/apps/mosquitto_ctrl/dynsec_client.c b/apps/mosquitto_ctrl/dynsec_client.c index 45b6d6af..d6131553 100644 --- a/apps/mosquitto_ctrl/dynsec_client.c +++ b/apps/mosquitto_ctrl/dynsec_client.c @@ -65,6 +65,9 @@ int dynsec_client__create(int argc, char *argv[], cJSON *j_command) rc = get_password(prompt, verify_prompt, true, password_buf, sizeof(password_buf)); if(rc == 0){ password = password_buf; + }else if(rc == 2){ + fprintf(stderr, "Error: Passwords do not match.\n"); + return -1; }else{ password = NULL; printf("\n"); @@ -163,7 +166,7 @@ int dynsec_client__set_password(int argc, char *argv[], cJSON *j_command) snprintf(verify_prompt, sizeof(verify_prompt), "Reenter password for %s: ", username); rc = get_password(prompt, verify_prompt, false, password_buf, sizeof(password_buf)); if(rc){ - return MOSQ_ERR_INVAL; + return -1; } password = password_buf; }else{ diff --git a/apps/mosquitto_passwd/get_password.c b/apps/mosquitto_passwd/get_password.c index a3113d1a..aba55656 100644 --- a/apps/mosquitto_passwd/get_password.c +++ b/apps/mosquitto_passwd/get_password.c @@ -135,7 +135,7 @@ int get_password(const char *prompt, const char *verify_prompt, bool quiet, char if(!quiet){ fprintf(stderr, "Error: Passwords do not match.\n"); } - return 1; + return 2; } }