passwd: rework:

* do not make backup copy by copying (just retain old file)
* correctly fall back to /etc/passwd if user is not in shadow
* fix bug with overlong passwd entries
* be permissive on some kinds of failures
* reduce stack usage
* code size: -500 bytes
This commit is contained in:
Denis Vlasenko
2006-11-30 16:41:15 +00:00
parent b8bb27c7ea
commit ab24e18c7a
5 changed files with 288 additions and 320 deletions

View File

@@ -157,14 +157,14 @@ static const char *obscure_msg(const char *old_p, const char *new_p, const struc
return NULL;
}
int obscure(const char *old, const char *newval, const struct passwd *pwdp)
int obscure(const char *old, const char *newval, const struct passwd *pw)
{
const char *msg;
if ((msg = obscure_msg(old, newval, pwdp))) {
printf("Bad password: %s.\n", msg);
/* If user is root warn only */
return getuid() ? 1 : 0;
msg = obscure_msg(old, newval, pw);
if (msg) {
printf("Bad password: %s\n", msg);
return 1;
}
return 0;
}