1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- --- a/loginutils/chpasswd.c
- +++ b/loginutils/chpasswd.c
- @@ -97,6 +97,11 @@ int chpasswd_main(int argc UNUSED_PARAM,
-
- crypt_make_pw_salt(salt, algo);
- free_me = pass = pw_encrypt(pass, salt, 0);
- +
- + if (pass[0] == 0) {
- + free(free_me);
- + bb_perror_msg_and_die("password encryption failed");
- + }
- }
-
- /* This is rather complex: if user is not found in /etc/shadow,
- --- a/loginutils/cryptpw.c
- +++ b/loginutils/cryptpw.c
- @@ -95,7 +95,7 @@ int cryptpw_main(int argc UNUSED_PARAM,
- /* Supports: cryptpw -m sha256 PASS 'rounds=999999999$SALT' */
- char salt[MAX_PW_SALT_LEN + sizeof("rounds=999999999$")];
- char *salt_ptr;
- - char *password;
- + char *password, *hash;
- const char *opt_m, *opt_S;
- int fd;
-
- @@ -140,8 +140,12 @@ int cryptpw_main(int argc UNUSED_PARAM,
- /* may still be NULL on EOF/error */
- }
-
- - if (password)
- - puts(pw_encrypt(password, salt, 1));
- + if (password) {
- + hash = pw_encrypt(password, salt, 1);
- + if (hash[0] == 0)
- + bb_perror_msg_and_die("password encryption failed");
- + puts(hash);
- + }
-
- return EXIT_SUCCESS;
- }
- --- a/loginutils/passwd.c
- +++ b/loginutils/passwd.c
- @@ -187,6 +187,10 @@ int passwd_main(int argc UNUSED_PARAM, c
- if (!newp) {
- logmode = LOGMODE_STDIO;
- bb_error_msg_and_die("password for %s is unchanged", name);
- + } else if (newp[0] == 0) {
- + logmode = LOGMODE_STDIO;
- + free(newp);
- + bb_perror_msg_and_die("password encryption failed");
- }
- } else if (opt & OPT_lock) {
- if (!c)
|