diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-11-02 19:18:49 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-11-02 19:18:49 +0100 |
commit | c6fb2a6b5fcece0ee4a7caf42cc344b5e0177822 (patch) | |
tree | dbf8b5ff4e7e0ebe7e6fa2387292916e53130949 | |
parent | 26c64bade81f748857b0327356f4a5e469feb335 (diff) | |
download | busybox-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.c | 5 | ||||
-rw-r--r-- | loginutils/passwd.c | 6 |
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)) { |