passwd: do not complain if /etc/shadow is missing
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 2 Nov 2009 18:18:49 +0000 (19:18 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 2 Nov 2009 18:18:49 +0000 (19:18 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/update_passwd.c
loginutils/passwd.c

index 3aab40175d98f9f0bea5380f57462d7ab6307aee..ba773fcb27fd2cc81ce4a478b66e3dcae20bc2ae 100644 (file)
@@ -110,8 +110,11 @@ int FAST_FUNC update_passwd(const char *filename,
                old_fp = fopen(filename, "r+");
        else
                old_fp = fopen_or_warn(filename, "r+");
-       if (!old_fp)
+       if (!old_fp) {
+               if (shadow)
+                       ret = 0; /* missing shadow is not an error */
                goto free_mem;
+       }
        old_fd = fileno(old_fp);
 
        selinux_preserve_fcontext(old_fd);
index 7b93713b9cdeabfee7160d9343c8caee818bedef..1164ff4f93830b63706dfe2eda6db740d13a8102 100644 (file)
@@ -21,7 +21,7 @@ static char* new_password(const struct passwd *pw, uid_t myuid, int algo)
        if (myuid && pw->pw_passwd[0]) {
                char *encrypted;
 
-               orig = bb_ask_stdin("Old password:"); /* returns ptr to static */
+               orig = bb_ask_stdin("Old password: "); /* returns ptr to static */
                if (!orig)
                        goto err_ret;
                encrypted = pw_encrypt(orig, pw->pw_passwd, 1); /* returns malloced str */
@@ -35,7 +35,7 @@ static char* new_password(const struct passwd *pw, uid_t myuid, int algo)
                if (ENABLE_FEATURE_CLEAN_UP) free(encrypted);
        }
        orig = xstrdup(orig); /* or else bb_ask_stdin() will destroy it */
-       newp = bb_ask_stdin("New password:"); /* returns ptr to static */
+       newp = bb_ask_stdin("New password: "); /* returns ptr to static */
        if (!newp)
                goto err_ret;
        newp = xstrdup(newp); /* we are going to bb_ask_stdin() again, so save it */
@@ -43,7 +43,7 @@ static char* new_password(const struct passwd *pw, uid_t myuid, int algo)
         && obscure(orig, newp, pw) && myuid)
                goto err_ret; /* non-root is not allowed to have weak passwd */
 
-       cp = bb_ask_stdin("Retype password:");
+       cp = bb_ask_stdin("Retype password: ");
        if (!cp)
                goto err_ret;
        if (strcmp(cp, newp)) {