aboutsummaryrefslogtreecommitdiff
path: root/loginutils/chpasswd.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2011-05-13 03:19:01 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2011-05-13 03:19:01 +0200
commit12a432715f066cf9d677316a39c9e0ebc6d72404 (patch)
tree14a33cdedbd6ba7739449cc3dec968b55a01efad /loginutils/chpasswd.c
parent0806e401d6747c391fa0427e0ccba9951f9a1c3d (diff)
downloadbusybox-12a432715f066cf9d677316a39c9e0ebc6d72404.tar.gz
adduser: safe username passing to passwd/addgroup
passwd: support creating SHA passwords random code shrink function old new delta crypt_make_pw_salt - 87 +87 adduser_main 883 904 +21 ... crypt_make_salt 99 89 -10 chpasswd_main 329 312 -17 packed_usage 28731 28691 -40 passwd_main 1070 1000 -70 cryptpw_main 310 224 -86 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 4/12 up/down: 154/-288) Total: -134 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'loginutils/chpasswd.c')
-rw-r--r--loginutils/chpasswd.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/loginutils/chpasswd.c b/loginutils/chpasswd.c
index 6c4296faa..f4718c829 100644
--- a/loginutils/chpasswd.c
+++ b/loginutils/chpasswd.c
@@ -37,9 +37,8 @@ int chpasswd_main(int argc UNUSED_PARAM, char **argv)
char *name, *pass;
char salt[sizeof("$N$XXXXXXXX")];
int opt, rc;
- int rnd = rnd; /* we *want* it to be non-initialized! */
- if (getuid())
+ if (getuid() != 0)
bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
opt_complementary = "m--e:e--m";
@@ -55,10 +54,12 @@ int chpasswd_main(int argc UNUSED_PARAM, char **argv)
xuname2uid(name); /* dies if there is no such user */
if (!(opt & OPT_ENC)) {
- rnd = crypt_make_salt(salt, 1, rnd);
+ crypt_make_salt(salt, 1);
if (opt & OPT_MD5) {
- strcpy(salt, "$1$");
- rnd = crypt_make_salt(salt + 3, 4, rnd);
+ salt[0] = '$';
+ salt[1] = '1';
+ salt[2] = '$';
+ crypt_make_salt(salt + 3, 4);
}
pass = pw_encrypt(pass, salt, 0);
}