[systemd-devel] [PATCH 1/2] journalctl: add --force option to recreate FSS
Zbigniew Jędrzejewski-Szmek
zbyszek at in.waw.pl
Sun Jul 14 20:08:23 PDT 2013
On Sun, Jul 14, 2013 at 10:48:13AM -0700, Shawn Landden wrote:
> reuse -f?
Naa, we can always add a short option later.
Manpage update?
Zbyszek
> ---
> src/journal/journalctl.c | 24 +++++++++++++++++++++---
> 1 file changed, 21 insertions(+), 3 deletions(-)
>
> diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
> index 32665b7..5f44fce 100644
> --- a/src/journal/journalctl.c
> +++ b/src/journal/journalctl.c
> @@ -79,6 +79,7 @@ static int arg_priorities = 0xFF;
> static const char *arg_verify_key = NULL;
> #ifdef HAVE_GCRYPT
> static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC;
> +static bool arg_force = false;
> #endif
> static usec_t arg_since, arg_until;
> static bool arg_since_set = false, arg_until_set = false;
> @@ -149,6 +150,7 @@ static int help(void) {
> " --update-catalog Update the message catalog database\n"
> #ifdef HAVE_GCRYPT
> " --setup-keys Generate new FSS key pair\n"
> + " --force Force overriding new FSS key pair with --setup-keys\n"
> " --verify Verify journal file consistency\n"
> #endif
> , program_invocation_short_name);
> @@ -179,6 +181,7 @@ static int parse_argv(int argc, char *argv[]) {
> ARG_LIST_CATALOG,
> ARG_DUMP_CATALOG,
> ARG_UPDATE_CATALOG,
> + ARG_FORCE,
> };
>
> static const struct option options[] = {
> @@ -187,6 +190,7 @@ static int parse_argv(int argc, char *argv[]) {
> { "no-pager", no_argument, NULL, ARG_NO_PAGER },
> { "pager-end", no_argument, NULL, 'e' },
> { "follow", no_argument, NULL, 'f' },
> + { "force", no_argument, NULL, ARG_FORCE },
> { "output", required_argument, NULL, 'o' },
> { "all", no_argument, NULL, 'a' },
> { "full", no_argument, NULL, 'l' },
> @@ -375,6 +379,10 @@ static int parse_argv(int argc, char *argv[]) {
> break;
>
> #ifdef HAVE_GCRYPT
> + case ARG_FORCE:
> + arg_force = true;
> + break;
> +
> case ARG_SETUP_KEYS:
> arg_action = ACTION_SETUP_KEYS;
> break;
> @@ -397,6 +405,7 @@ static int parse_argv(int argc, char *argv[]) {
> case ARG_SETUP_KEYS:
> case ARG_VERIFY_KEY:
> case ARG_INTERVAL:
> + case ARG_FORCE:
> log_error("Forward-secure sealing not available.");
> return -ENOTSUP;
> #endif
> @@ -756,9 +765,18 @@ static int setup_keys(void) {
> return log_oom();
>
> if (access(p, F_OK) >= 0) {
> - log_error("Sealing key file %s exists already.", p);
> - r = -EEXIST;
> - goto finish;
> + if (arg_force) {
> + r = unlink(p);
> + if (r < 0) {
> + log_error("unlink(\"%s\") failed: %m", p);
> + r = -errno;
> + goto finish;
> + }
> + } else {
> + log_error("Sealing key file %s exists already. (--force to recreate)", p);
> + r = -EEXIST;
> + goto finish;
> + }
> }
>
> if (asprintf(&k, "/var/log/journal/" SD_ID128_FORMAT_STR "/fss.tmp.XXXXXX",
> --
> 1.8.3.2
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
>
More information about the systemd-devel
mailing list