diff options
author | Lennart Poettering <lennart@poettering.net> | 2020-09-01 20:29:28 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2020-09-02 08:11:07 +0200 |
commit | 64a5384fd2cde9b66a778c318036e7771f273f17 (patch) | |
tree | 89f942b12fbb713ca24120941e1aec2a9b2fdaa3 /src/coredump/coredump.c | |
parent | ae0d36c161ef0b8bde08d37674eb500061245728 (diff) | |
download | systemd-64a5384fd2cde9b66a778c318036e7771f273f17.tar.gz |
coredump: don't convert s → µs twice
We already append 000000 early on when parsing the cmdline args, let's
not do that a second time.
Fixes: #16919
Diffstat (limited to 'src/coredump/coredump.c')
-rw-r--r-- | src/coredump/coredump.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c index 85242f349f..88739ed5bc 100644 --- a/src/coredump/coredump.c +++ b/src/coredump/coredump.c @@ -77,7 +77,7 @@ enum { META_ARGV_UID, /* %u: as seen in the initial user namespace */ META_ARGV_GID, /* %g: as seen in the initial user namespace */ META_ARGV_SIGNAL, /* %s: number of signal causing dump */ - META_ARGV_TIMESTAMP, /* %t: time of dump, expressed as seconds since the Epoch */ + META_ARGV_TIMESTAMP, /* %t: time of dump, expressed as seconds since the Epoch (we expand this to µs granularity) */ META_ARGV_RLIMIT, /* %c: core file size soft resource limit */ META_ARGV_HOSTNAME, /* %h: hostname */ _META_ARGV_MAX, @@ -311,7 +311,7 @@ static int make_filename(const Context *context, char **ret) { return -ENOMEM; if (asprintf(ret, - "/var/lib/systemd/coredump/core.%s.%s." SD_ID128_FORMAT_STR ".%s.%s000000", + "/var/lib/systemd/coredump/core.%s.%s." SD_ID128_FORMAT_STR ".%s.%s", c, u, SD_ID128_FORMAT_VAL(boot), @@ -1016,8 +1016,11 @@ static int send_iovec(const struct iovec_wrapper *iovw, int input_fd) { return 0; } -static int gather_pid_metadata_from_argv(struct iovec_wrapper *iovw, Context *context, - int argc, char **argv) { +static int gather_pid_metadata_from_argv( + struct iovec_wrapper *iovw, + Context *context, + int argc, char **argv) { + _cleanup_free_ char *free_timestamp = NULL; int i, r, signo; char *t; @@ -1035,6 +1038,7 @@ static int gather_pid_metadata_from_argv(struct iovec_wrapper *iovw, Context *co t = argv[i]; switch (i) { + case META_ARGV_TIMESTAMP: /* The journal fields contain the timestamp padded with six * zeroes, so that the kernel-supplied 1s granularity timestamps @@ -1044,12 +1048,14 @@ static int gather_pid_metadata_from_argv(struct iovec_wrapper *iovw, Context *co if (!t) return log_oom(); break; + case META_ARGV_SIGNAL: /* For signal, record its pretty name too */ if (safe_atoi(argv[i], &signo) >= 0 && SIGNAL_VALID(signo)) (void) iovw_put_string_field(iovw, "COREDUMP_SIGNAL_NAME=SIG", signal_to_string(signo)); break; + default: break; } |