passwd: do not complain if /etc/shadow is missing
No binary (build failed)
—
(log yok)
| @@ -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); | |
| @@ -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)) { | |