From 8a555dcbf776886cbfbafe1ee9c7482d81d11378 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 9 Jan 2023 10:52:30 +0900 Subject: [PATCH 1/4] tmpfile: fix resource leak Fixes CID#1501687. --- src/tmpfiles/offline-passwd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tmpfiles/offline-passwd.c b/src/tmpfiles/offline-passwd.c index 4ffed1c102..085286e992 100644 --- a/src/tmpfiles/offline-passwd.c +++ b/src/tmpfiles/offline-passwd.c @@ -11,13 +11,14 @@ DEFINE_PRIVATE_HASH_OPS_WITH_KEY_DESTRUCTOR(uid_gid_hash_ops, char, string_hash_ static int open_passwd_file(const char *root, const char *fname, FILE **ret_file) { _cleanup_free_ char *p = NULL, *bn = NULL; _cleanup_close_ int fd = -EBADF; + _cleanup_fclose_ FILE *f = NULL; int r; fd = chase_symlinks_and_open(fname, root, CHASE_PREFIX_ROOT, O_RDONLY|O_CLOEXEC, &p); if (fd < 0) return fd; - FILE *f = fdopen(fd, "r"); + f = fdopen(fd, "r"); if (!f) return -errno; @@ -29,7 +30,7 @@ static int open_passwd_file(const char *root, const char *fname, FILE **ret_file log_debug("Reading %s entries from %s...", bn, p); - *ret_file = f; + *ret_file = TAKE_PTR(f); return 0; } From da8f9c4661397db8b125e8c843d861430f265e71 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 9 Jan 2023 10:53:20 +0900 Subject: [PATCH 2/4] tmpfile: make failure in path_extract_filename() non-critical --- src/tmpfiles/offline-passwd.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/tmpfiles/offline-passwd.c b/src/tmpfiles/offline-passwd.c index 085286e992..fe866f8ca1 100644 --- a/src/tmpfiles/offline-passwd.c +++ b/src/tmpfiles/offline-passwd.c @@ -9,10 +9,9 @@ DEFINE_PRIVATE_HASH_OPS_WITH_KEY_DESTRUCTOR(uid_gid_hash_ops, char, string_hash_func, string_compare_func, free); static int open_passwd_file(const char *root, const char *fname, FILE **ret_file) { - _cleanup_free_ char *p = NULL, *bn = NULL; + _cleanup_free_ char *p = NULL; _cleanup_close_ int fd = -EBADF; _cleanup_fclose_ FILE *f = NULL; - int r; fd = chase_symlinks_and_open(fname, root, CHASE_PREFIX_ROOT, O_RDONLY|O_CLOEXEC, &p); if (fd < 0) @@ -24,11 +23,12 @@ static int open_passwd_file(const char *root, const char *fname, FILE **ret_file TAKE_FD(fd); - r = path_extract_filename(fname, &bn); - if (r < 0) - return r; + if (DEBUG_LOGGING) { + _cleanup_free_ char *bn = NULL; - log_debug("Reading %s entries from %s...", bn, p); + (void) path_extract_filename(fname, &bn); + log_debug("Reading %s entries from %s...", strna(bn), p); + } *ret_file = TAKE_PTR(f); return 0; From a42909e60ca6add0c905490fa05fe63ae03115fd Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 9 Jan 2023 10:58:10 +0900 Subject: [PATCH 3/4] bootctl: fix indentation --- src/boot/bootctl-random-seed.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/boot/bootctl-random-seed.c b/src/boot/bootctl-random-seed.c index 430bbeb33d..e512b9b68c 100644 --- a/src/boot/bootctl-random-seed.c +++ b/src/boot/bootctl-random-seed.c @@ -39,7 +39,7 @@ static int set_system_token(void) { r = getenv_bool("SYSTEMD_WRITE_SYSTEM_TOKEN"); if (r < 0) { if (r != -ENXIO) - log_warning_errno(r, "Failed to parse $SYSTEMD_WRITE_SYSTEM_TOKEN, ignoring."); + log_warning_errno(r, "Failed to parse $SYSTEMD_WRITE_SYSTEM_TOKEN, ignoring."); } else if (r == 0) { log_notice("Not writing system token, because $SYSTEMD_WRITE_SYSTEM_TOKEN is set to false."); return 0; From 3d5af17045d06b85ce451ebda4259f8f8bec8375 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 9 Jan 2023 11:00:53 +0900 Subject: [PATCH 4/4] bootctl: 'tmp' is always non-NULL Fixes CID#1502330. --- src/boot/bootctl-random-seed.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/boot/bootctl-random-seed.c b/src/boot/bootctl-random-seed.c index e512b9b68c..deda4debd2 100644 --- a/src/boot/bootctl-random-seed.c +++ b/src/boot/bootctl-random-seed.c @@ -169,8 +169,8 @@ int install_random_seed(const char *esp) { return set_system_token(); fail: - if (tmp) - (void) unlinkat(loader_dir_fd, tmp, 0); + assert(tmp); + (void) unlinkat(loader_dir_fd, tmp, 0); return r; }