From 12a432715f066cf9d677316a39c9e0ebc6d72404 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 13 May 2011 03:19:01 +0200 Subject: 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 --- loginutils/chpasswd.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'loginutils/chpasswd.c') 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); } -- cgit v1.2.3