summaryrefslogtreecommitdiff
path: root/src/journal
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-02-17 09:11:28 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2023-02-17 09:13:22 +0900
commitd6467dc6043d19de9fcdbd7afccf3f7e426fad26 (patch)
tree59bc230101c0bf865d783ba4263ba46e32a1b7b5 /src/journal
parent9556e79be538776e91794d1d5f10f252f49da1bd (diff)
downloadsystemd-d6467dc6043d19de9fcdbd7afccf3f7e426fad26.tar.gz
journalctl: fix fd leak
Diffstat (limited to 'src/journal')
-rw-r--r--src/journal/journalctl.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 30a843d64f..0267fc6506 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -2100,6 +2100,7 @@ static int run(int argc, char *argv[]) {
_cleanup_(sd_journal_closep) sd_journal *j = NULL;
sd_id128_t previous_boot_id = SD_ID128_NULL, previous_boot_id_output = SD_ID128_NULL;
dual_timestamp previous_ts_output = DUAL_TIMESTAMP_NULL;
+ _cleanup_close_ int machine_fd = -EBADF;
int n_shown = 0, r, poll_fd = -EBADF;
setlocale(LC_ALL, "");
@@ -2240,13 +2241,11 @@ static int run(int argc, char *argv[]) {
if (r < 0)
return bus_log_parse_error(r);
- fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
- if (fd < 0)
+ machine_fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
+ if (machine_fd < 0)
return log_error_errno(errno, "Failed to duplicate file descriptor: %m");
- r = sd_journal_open_directory_fd(&j, fd, SD_JOURNAL_OS_ROOT);
- if (r < 0)
- safe_close(fd);
+ r = sd_journal_open_directory_fd(&j, machine_fd, SD_JOURNAL_OS_ROOT);
} else
r = sd_journal_open_namespace(
&j,