[git commit] passwd: do not set 0 as date of last password change, closes 11951

Denys Vlasenko vda.linux at googlemail.com
Fri Jun 7 10:30:23 UTC 2019


commit: https://git.busybox.net/busybox/commit/?id=a5c5dc6f0b96f9ef8c567f40388d91d44aec1eb7
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
update_passwd                                       1491    1505     +14

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 libbb/update_passwd.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libbb/update_passwd.c b/libbb/update_passwd.c
index 95423d19b..dc967683a 100644
--- a/libbb/update_passwd.c
+++ b/libbb/update_passwd.c
@@ -270,10 +270,16 @@ int FAST_FUNC update_passwd(const char *filename,
 			if (shadow && *cp == ':') {
 				/* /etc/shadow's field 3 (passwd change date) needs updating */
 				/* 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, ':');
 				/* "name:" + "new_passwd" + ":" + "change date" + ":rest of line" */
 				fprintf(new_fp, "%s%s:%u%s\n", name_colon, new_passwd,
-					(unsigned)(time(NULL)) / (24*60*60), cp);
+					time_days, cp);
 			} else {
 				/* "name:" + "new_passwd" + ":rest of line" */
 				fprintf(new_fp, "%s%s%s\n", name_colon, new_passwd, cp);


More information about the busybox-cvs mailing list