passwd: do not set 0 as date of last password change, closes 11951
function old new delta update_passwd 1491 1505 +14 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
5c317c0b8d
commit
a5c5dc6f0b
@ -270,10 +270,16 @@ int FAST_FUNC update_passwd(const char *filename,
|
|||||||
if (shadow && *cp == ':') {
|
if (shadow && *cp == ':') {
|
||||||
/* /etc/shadow's field 3 (passwd change date) needs updating */
|
/* /etc/shadow's field 3 (passwd change date) needs updating */
|
||||||
/* move past old change date */
|
/* move past old change date */
|
||||||
|
unsigned time_days = (unsigned long)(time(NULL)) / (24*60*60);
|
||||||
|
|
||||||
|
if (time_days == 0) {
|
||||||
|
/* 0 as change date has special meaning, avoid it */
|
||||||
|
time_days = 1;
|
||||||
|
}
|
||||||
cp = strchrnul(cp + 1, ':');
|
cp = strchrnul(cp + 1, ':');
|
||||||
/* "name:" + "new_passwd" + ":" + "change date" + ":rest of line" */
|
/* "name:" + "new_passwd" + ":" + "change date" + ":rest of line" */
|
||||||
fprintf(new_fp, "%s%s:%u%s\n", name_colon, new_passwd,
|
fprintf(new_fp, "%s%s:%u%s\n", name_colon, new_passwd,
|
||||||
(unsigned)(time(NULL)) / (24*60*60), cp);
|
time_days, cp);
|
||||||
} else {
|
} else {
|
||||||
/* "name:" + "new_passwd" + ":rest of line" */
|
/* "name:" + "new_passwd" + ":rest of line" */
|
||||||
fprintf(new_fp, "%s%s%s\n", name_colon, new_passwd, cp);
|
fprintf(new_fp, "%s%s%s\n", name_colon, new_passwd, cp);
|
||||||
|
Loading…
Reference in New Issue
Block a user