diff options
author | Denys Vlasenko | 2011-05-13 03:19:01 +0200 |
---|---|---|
committer | Denys Vlasenko | 2011-05-13 03:19:01 +0200 |
commit | 12a432715f066cf9d677316a39c9e0ebc6d72404 (patch) | |
tree | 14a33cdedbd6ba7739449cc3dec968b55a01efad /loginutils/chpasswd.c | |
parent | 0806e401d6747c391fa0427e0ccba9951f9a1c3d (diff) | |
download | busybox-12a432715f066cf9d677316a39c9e0ebc6d72404.zip busybox-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.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/loginutils/chpasswd.c b/loginutils/chpasswd.c index 6c4296f..f4718c8 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); } |