passwd: do not complain if /etc/shadow is missing
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
26c64bade8
commit
c6fb2a6b5f
@ -110,8 +110,11 @@ int FAST_FUNC update_passwd(const char *filename,
|
|||||||
old_fp = fopen(filename, "r+");
|
old_fp = fopen(filename, "r+");
|
||||||
else
|
else
|
||||||
old_fp = fopen_or_warn(filename, "r+");
|
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;
|
goto free_mem;
|
||||||
|
}
|
||||||
old_fd = fileno(old_fp);
|
old_fd = fileno(old_fp);
|
||||||
|
|
||||||
selinux_preserve_fcontext(old_fd);
|
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]) {
|
if (myuid && pw->pw_passwd[0]) {
|
||||||
char *encrypted;
|
char *encrypted;
|
||||||
|
|
||||||
orig = bb_ask_stdin("Old password:"); /* returns ptr to static */
|
orig = bb_ask_stdin("Old password: "); /* returns ptr to static */
|
||||||
if (!orig)
|
if (!orig)
|
||||||
goto err_ret;
|
goto err_ret;
|
||||||
encrypted = pw_encrypt(orig, pw->pw_passwd, 1); /* returns malloced str */
|
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);
|
if (ENABLE_FEATURE_CLEAN_UP) free(encrypted);
|
||||||
}
|
}
|
||||||
orig = xstrdup(orig); /* or else bb_ask_stdin() will destroy it */
|
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)
|
if (!newp)
|
||||||
goto err_ret;
|
goto err_ret;
|
||||||
newp = xstrdup(newp); /* we are going to bb_ask_stdin() again, so save it */
|
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)
|
&& obscure(orig, newp, pw) && myuid)
|
||||||
goto err_ret; /* non-root is not allowed to have weak passwd */
|
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)
|
if (!cp)
|
||||||
goto err_ret;
|
goto err_ret;
|
||||||
if (strcmp(cp, newp)) {
|
if (strcmp(cp, newp)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user