From: Lennart Poettering Date: Wed, 20 May 2020 16:06:56 +0000 (+0200) Subject: homed: also fsync private/public key pair when storing it X-Git-Tag: v246-rc1~305^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa3709c5fb23ee1741218871758bdee3ded0190c;p=thirdparty%2Fsystemd.git homed: also fsync private/public key pair when storing it --- diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c index 525e0c7d662..ea5791ae498 100644 --- a/src/home/homed-manager.c +++ b/src/home/homed-manager.c @@ -1337,7 +1337,7 @@ static int manager_generate_key_pair(Manager *m) { if (PEM_write_PUBKEY(fpublic, m->private_key) <= 0) return log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to write public key."); - r = fflush_and_check(fpublic); + r = fflush_sync_and_check(fpublic); if (r < 0) return log_error_errno(r, "Failed to write private key: %m"); @@ -1351,7 +1351,7 @@ static int manager_generate_key_pair(Manager *m) { if (PEM_write_PrivateKey(fprivate, m->private_key, NULL, NULL, 0, NULL, 0) <= 0) return log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to write private key pair."); - r = fflush_and_check(fprivate); + r = fflush_sync_and_check(fprivate); if (r < 0) return log_error_errno(r, "Failed to write private key: %m"); @@ -1369,6 +1369,10 @@ static int manager_generate_key_pair(Manager *m) { } temp_private = mfree(temp_private); + r = fsync_path_at(AT_FDCWD, "/var/lib/systemd/home/"); + if (r < 0) + log_warning_errno(r, "Failed to sync /var/lib/systemd/home/, ignoring: %m"); + return 1; }