summaryrefslogtreecommitdiff
path: root/src/coredump/coredump.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2020-09-01 20:29:28 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-09-02 08:11:07 +0200
commit64a5384fd2cde9b66a778c318036e7771f273f17 (patch)
tree89f942b12fbb713ca24120941e1aec2a9b2fdaa3 /src/coredump/coredump.c
parentae0d36c161ef0b8bde08d37674eb500061245728 (diff)
downloadsystemd-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.c14
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;
}