Merge pull request #1254 from ccvca/fix_passwd_len
Fix password input when MAX_BUFFER_LEN is not 1024 in mosquitto_passwd.c
This commit is contained in:
commit
07d2504bf5
@ -339,13 +339,15 @@ int gets_quiet(char *s, int len)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_password(char *password, int len)
|
int get_password(char *password, size_t len)
|
||||||
{
|
{
|
||||||
char pw1[MAX_BUFFER_LEN], pw2[MAX_BUFFER_LEN];
|
char pw1[MAX_BUFFER_LEN], pw2[MAX_BUFFER_LEN];
|
||||||
|
size_t minLen;
|
||||||
|
minLen = len < MAX_BUFFER_LEN ? len : MAX_BUFFER_LEN;
|
||||||
|
|
||||||
printf("Password: ");
|
printf("Password: ");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
if(gets_quiet(pw1, MAX_BUFFER_LEN)){
|
if(gets_quiet(pw1, minLen)){
|
||||||
fprintf(stderr, "Error: Empty password.\n");
|
fprintf(stderr, "Error: Empty password.\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -353,7 +355,7 @@ int get_password(char *password, int len)
|
|||||||
|
|
||||||
printf("Reenter password: ");
|
printf("Reenter password: ");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
if(gets_quiet(pw2, MAX_BUFFER_LEN)){
|
if(gets_quiet(pw2, minLen)){
|
||||||
fprintf(stderr, "Error: Empty password.\n");
|
fprintf(stderr, "Error: Empty password.\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -364,7 +366,7 @@ int get_password(char *password, int len)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(password, pw1, len);
|
strncpy(password, pw1, minLen);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -526,7 +528,7 @@ int main(int argc, char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(create_new){
|
if(create_new){
|
||||||
rc = get_password(password, 1024);
|
rc = get_password(password, MAX_BUFFER_LEN);
|
||||||
if(rc){
|
if(rc){
|
||||||
free(password_file);
|
free(password_file);
|
||||||
return rc;
|
return rc;
|
||||||
@ -581,7 +583,7 @@ int main(int argc, char *argv[])
|
|||||||
/* Update password for individual user */
|
/* Update password for individual user */
|
||||||
rc = update_pwuser(fptr, ftmp, username, password_cmd);
|
rc = update_pwuser(fptr, ftmp, username, password_cmd);
|
||||||
}else{
|
}else{
|
||||||
rc = get_password(password, 1024);
|
rc = get_password(password, MAX_BUFFER_LEN);
|
||||||
if(rc){
|
if(rc){
|
||||||
fclose(fptr);
|
fclose(fptr);
|
||||||
fclose(ftmp);
|
fclose(ftmp);
|
||||||
|
Loading…
Reference in New Issue
Block a user