From 64a5384fd2cde9b66a778c318036e7771f273f17 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 1 Sep 2020 20:29:28 +0200 Subject: [PATCH] =?UTF-8?q?coredump:=20don't=20convert=20s=20=E2=86=92=20?= =?UTF-8?q?=C2=B5s=20twice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We already append 000000 early on when parsing the cmdline args, let's not do that a second time. Fixes: #16919 --- src/coredump/coredump.c | 14 ++++++++++---- 1 file 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; }