aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--loginutils/cryptpw.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/loginutils/cryptpw.c b/loginutils/cryptpw.c
index a36f920f4..29f0fbe91 100644
--- a/loginutils/cryptpw.c
+++ b/loginutils/cryptpw.c
@@ -92,6 +92,7 @@ int cryptpw_main(int argc UNUSED_PARAM, char **argv)
92{ 92{
93 char salt[MAX_PW_SALT_LEN]; 93 char salt[MAX_PW_SALT_LEN];
94 char *salt_ptr; 94 char *salt_ptr;
95 char *password;
95 const char *opt_m, *opt_S; 96 const char *opt_m, *opt_S;
96 int fd; 97 int fd;
97 98
@@ -123,15 +124,19 @@ int cryptpw_main(int argc UNUSED_PARAM, char **argv)
123 124
124 xmove_fd(fd, STDIN_FILENO); 125 xmove_fd(fd, STDIN_FILENO);
125 126
126 puts(pw_encrypt( 127 password = argv[0];
127 argv[0] ? argv[0] : ( 128 if (!password) {
128 /* Only mkpasswd, and only from tty, prompts. 129 /* Only mkpasswd, and only from tty, prompts.
129 * Otherwise it is a plain read. */ 130 * Otherwise it is a plain read. */
130 (isatty(STDIN_FILENO) && applet_name[0] == 'm') 131 password = (isatty(STDIN_FILENO) && applet_name[0] == 'm')
131 ? bb_ask_stdin("Password: ") 132 ? bb_ask_stdin("Password: ")
132 : xmalloc_fgetline(stdin) 133 : xmalloc_fgetline(stdin)
133 ), 134 ;
134 salt, 1)); 135 /* may still be NULL on EOF/error */
136 }
137
138 if (password)
139 puts(pw_encrypt(password, salt, 1));
135 140
136 return EXIT_SUCCESS; 141 return EXIT_SUCCESS;
137} 142}