aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-11-02 19:18:49 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2009-11-02 19:18:49 +0100
commitc6fb2a6b5fcece0ee4a7caf42cc344b5e0177822 (patch)
treedbf8b5ff4e7e0ebe7e6fa2387292916e53130949
parent26c64bade81f748857b0327356f4a5e469feb335 (diff)
downloadbusybox-w32-c6fb2a6b5fcece0ee4a7caf42cc344b5e0177822.tar.gz
busybox-w32-c6fb2a6b5fcece0ee4a7caf42cc344b5e0177822.tar.bz2
busybox-w32-c6fb2a6b5fcece0ee4a7caf42cc344b5e0177822.zip
passwd: do not complain if /etc/shadow is missing
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--libbb/update_passwd.c5
-rw-r--r--loginutils/passwd.c6
2 files changed, 7 insertions, 4 deletions
diff --git a/libbb/update_passwd.c b/libbb/update_passwd.c
index 3aab40175..ba773fcb2 100644
--- a/libbb/update_passwd.c
+++ b/libbb/update_passwd.c
@@ -110,8 +110,11 @@ int FAST_FUNC update_passwd(const char *filename,
110 old_fp = fopen(filename, "r+"); 110 old_fp = fopen(filename, "r+");
111 else 111 else
112 old_fp = fopen_or_warn(filename, "r+"); 112 old_fp = fopen_or_warn(filename, "r+");
113 if (!old_fp) 113 if (!old_fp) {
114 if (shadow)
115 ret = 0; /* missing shadow is not an error */
114 goto free_mem; 116 goto free_mem;
117 }
115 old_fd = fileno(old_fp); 118 old_fd = fileno(old_fp);
116 119
117 selinux_preserve_fcontext(old_fd); 120 selinux_preserve_fcontext(old_fd);
diff --git a/loginutils/passwd.c b/loginutils/passwd.c
index 7b93713b9..1164ff4f9 100644
--- a/loginutils/passwd.c
+++ b/loginutils/passwd.c
@@ -21,7 +21,7 @@ static char* new_password(const struct passwd *pw, uid_t myuid, int algo)
21 if (myuid && pw->pw_passwd[0]) { 21 if (myuid && pw->pw_passwd[0]) {
22 char *encrypted; 22 char *encrypted;
23 23
24 orig = bb_ask_stdin("Old password:"); /* returns ptr to static */ 24 orig = bb_ask_stdin("Old password: "); /* returns ptr to static */
25 if (!orig) 25 if (!orig)
26 goto err_ret; 26 goto err_ret;
27 encrypted = pw_encrypt(orig, pw->pw_passwd, 1); /* returns malloced str */ 27 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)
35 if (ENABLE_FEATURE_CLEAN_UP) free(encrypted); 35 if (ENABLE_FEATURE_CLEAN_UP) free(encrypted);
36 } 36 }
37 orig = xstrdup(orig); /* or else bb_ask_stdin() will destroy it */ 37 orig = xstrdup(orig); /* or else bb_ask_stdin() will destroy it */
38 newp = bb_ask_stdin("New password:"); /* returns ptr to static */ 38 newp = bb_ask_stdin("New password: "); /* returns ptr to static */
39 if (!newp) 39 if (!newp)
40 goto err_ret; 40 goto err_ret;
41 newp = xstrdup(newp); /* we are going to bb_ask_stdin() again, so save it */ 41 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)
43 && obscure(orig, newp, pw) && myuid) 43 && obscure(orig, newp, pw) && myuid)
44 goto err_ret; /* non-root is not allowed to have weak passwd */ 44 goto err_ret; /* non-root is not allowed to have weak passwd */
45 45
46 cp = bb_ask_stdin("Retype password:"); 46 cp = bb_ask_stdin("Retype password: ");
47 if (!cp) 47 if (!cp)
48 goto err_ret; 48 goto err_ret;
49 if (strcmp(cp, newp)) { 49 if (strcmp(cp, newp)) {