From: Yu Watanabe Date: Mon, 27 Mar 2023 17:07:31 +0000 (+0900) Subject: journal-remote: make specified output file absolute X-Git-Tag: v254-rc1~895^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F27022%2Fhead;p=thirdparty%2Fsystemd.git journal-remote: make specified output file absolute After f12b399dd6362a03379cb769954ebfb9972236ed, the output path is also used to determine the directory to be vacuumed. And if a filename only path is specified, `writer_new()` fails since the commit. This makes the specified path is always made absolute. This should not change any behavior before the offending commit, as `journal_open()` opens the specified journal file with `AT_FDCWD`. Fixes #27012. --- diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c index 2cc7428e788..c5ecc2b844b 100644 --- a/src/journal-remote/journal-remote-main.c +++ b/src/journal-remote/journal-remote-main.c @@ -42,7 +42,7 @@ static int http_socket = -1, https_socket = -1; static char** arg_gnutls_log = NULL; static JournalWriteSplitMode arg_split_mode = _JOURNAL_WRITE_SPLIT_INVALID; -static const char* arg_output = NULL; +static char *arg_output = NULL; static char *arg_key = NULL; static char *arg_cert = NULL; @@ -62,6 +62,7 @@ STATIC_DESTRUCTOR_REGISTER(arg_gnutls_log, strv_freep); STATIC_DESTRUCTOR_REGISTER(arg_key, freep); STATIC_DESTRUCTOR_REGISTER(arg_cert, freep); STATIC_DESTRUCTOR_REGISTER(arg_trust, freep); +STATIC_DESTRUCTOR_REGISTER(arg_output, freep); static const char* const journal_write_split_mode_table[_JOURNAL_WRITE_SPLIT_MAX] = { [JOURNAL_WRITE_SPLIT_NONE] = "none", @@ -957,7 +958,9 @@ static int parse_argv(int argc, char *argv[]) { return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "cannot use --output/-o more than once"); - arg_output = optarg; + r = parse_path_argument(optarg, /* suppress_root = */ false, &arg_output); + if (r < 0) + return r; break; case ARG_SPLIT_MODE: