diff options
author | Nicolas Thill <nico@openwrt.org> | 2011-10-21 23:08:45 +0000 |
---|---|---|
committer | Nicolas Thill <nico@openwrt.org> | 2011-10-21 23:08:45 +0000 |
commit | d10b4495bcb7fa7bfdf1738097491f0ec4f75655 (patch) | |
tree | 582ab3d138a618bb22578bca4be5e1720caab80a /package/busybox/patches/000-upstream-chpasswd.patch | |
parent | 3fadea0d6f33da681b05f565130f2e8642371947 (diff) | |
download | mtk-20170518-d10b4495bcb7fa7bfdf1738097491f0ec4f75655.zip mtk-20170518-d10b4495bcb7fa7bfdf1738097491f0ec4f75655.tar.gz mtk-20170518-d10b4495bcb7fa7bfdf1738097491f0ec4f75655.tar.bz2 |
busybox: update to 1.19.2 (thanks to Peter Wagner)
SVN-Revision: 28513
Diffstat (limited to 'package/busybox/patches/000-upstream-chpasswd.patch')
-rw-r--r-- | package/busybox/patches/000-upstream-chpasswd.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/package/busybox/patches/000-upstream-chpasswd.patch b/package/busybox/patches/000-upstream-chpasswd.patch new file mode 100644 index 0000000..75b0c4d --- /dev/null +++ b/package/busybox/patches/000-upstream-chpasswd.patch @@ -0,0 +1,55 @@ +--- a/loginutils/chpasswd.c ++++ b/loginutils/chpasswd.c +@@ -33,9 +33,8 @@ static const char chpasswd_longopts[] AL + int chpasswd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; + int chpasswd_main(int argc UNUSED_PARAM, char **argv) + { +- char *name, *pass; +- char salt[sizeof("$N$XXXXXXXX")]; +- int opt, rc; ++ char *name; ++ int opt; + + if (getuid() != 0) + bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); +@@ -45,6 +44,10 @@ int chpasswd_main(int argc UNUSED_PARAM, + opt = getopt32(argv, "em"); + + while ((name = xmalloc_fgetline(stdin)) != NULL) { ++ char *free_me; ++ char *pass; ++ int rc; ++ + pass = strchr(name, ':'); + if (!pass) + bb_error_msg_and_die("missing new password"); +@@ -52,7 +55,10 @@ int chpasswd_main(int argc UNUSED_PARAM, + + xuname2uid(name); /* dies if there is no such user */ + ++ free_me = NULL; + if (!(opt & OPT_ENC)) { ++ char salt[sizeof("$N$XXXXXXXX")]; ++ + crypt_make_salt(salt, 1); + if (opt & OPT_MD5) { + salt[0] = '$'; +@@ -60,7 +66,7 @@ int chpasswd_main(int argc UNUSED_PARAM, + salt[2] = '$'; + crypt_make_salt(salt + 3, 4); + } +- pass = pw_encrypt(pass, salt, 0); ++ free_me = pass = pw_encrypt(pass, salt, 0); + } + + /* This is rather complex: if user is not found in /etc/shadow, +@@ -81,8 +87,7 @@ int chpasswd_main(int argc UNUSED_PARAM, + bb_info_msg("Password for '%s' changed", name); + logmode = LOGMODE_STDIO; + free(name); +- if (!(opt & OPT_ENC)) +- free(pass); ++ free(free_me); + } + return EXIT_SUCCESS; + } |