From: Avram Lubkin Date: Tue, 16 Aug 2022 12:51:21 +0000 (-0400) Subject: sysusers: add fsync for passwd (#24324) X-Git-Tag: v252-rc1~436 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=19193b489841a7bcccda7122ac0849cf6efe59fd;p=thirdparty%2Fsystemd.git sysusers: add fsync for passwd (#24324) https://github.com/systemd/systemd/pull/6636 added `fsync()` when temporary shadow, group, and gshadow files are created, but it was not added for passwd. As far as I can tell, this seems to have been an oversight. I'm seeing real world issues where a blank /etc/passwd file is being created if a machine loses power early in the boot process. --- diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index dfb703f10ec..9c1abf984ec 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -507,7 +507,7 @@ static int write_temporary_passwd(const char *passwd_path, FILE **tmpfile, char break; } - r = fflush_and_check(passwd); + r = fflush_sync_and_check(passwd); if (r < 0) return log_debug_errno(r, "Failed to flush %s: %m", passwd_tmp);