From 3732cf72d6f05fcd9d9f301eac84c1a61443e379 Mon Sep 17 00:00:00 2001 From: juyin Date: Thu, 31 Mar 2022 16:48:52 +0800 Subject: [PATCH] chpasswd: fix function problem with -R parameter Generating salt value depends on /dev/urandom. But after the function process_root_flag changed the root directory, It does not exist. So, generate salt value before changeing the directory. Fixes: #514 --- src/chpasswd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/chpasswd.c b/src/chpasswd.c index 94e923ab..d0da14c6 100644 --- a/src/chpasswd.c +++ b/src/chpasswd.c @@ -451,10 +451,11 @@ int main (int argc, char **argv) (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); - process_root_flag ("-R", argc, argv); - process_flags (argc, argv); + salt = get_salt(); + process_root_flag ("-R", argc, argv); + #ifdef USE_PAM if (md5flg || eflg || cflg) { use_pam = false; @@ -545,7 +546,6 @@ int main (int argc, char **argv) const struct passwd *pw; struct passwd newpw; - salt = get_salt(); if (salt) { cp = pw_encrypt (newpwd, salt); if (NULL == cp) {