diff options
author | Luca Boccassi <luca.boccassi@microsoft.com> | 2021-11-21 17:05:28 +0000 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@microsoft.com> | 2021-11-30 16:49:58 +0000 |
commit | 61aea456c12c54f49c4a76259af130e576130ce9 (patch) | |
tree | 2949292609f07bcdea764ec98b1a7e5d7cd5e1dc /src/coredump/coredump.c | |
parent | 67f7675f477d369506eeb17ef2d5b365f83ac84a (diff) | |
download | systemd-61aea456c12c54f49c4a76259af130e576130ce9.tar.gz |
coredump: analyze object with libdwelf in forked process
Parsing objects is risky as data could be malformed or malicious,
so avoid doing that from the main systemd-coredump process and
instead fork another process, and set it to avoid generating
core files itself.
Diffstat (limited to 'src/coredump/coredump.c')
-rw-r--r-- | src/coredump/coredump.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c index 9b035a5d8a..c4b393631a 100644 --- a/src/coredump/coredump.c +++ b/src/coredump/coredump.c @@ -825,7 +825,11 @@ static int submit_coredump( "than %"PRIu64" (the configured maximum)", coredump_size, arg_process_size_max); } else if (coredump_fd >= 0) - coredump_parse_core(coredump_fd, context->meta[META_EXE], &stacktrace, &json_metadata); + (void) parse_elf_object(coredump_fd, + context->meta[META_EXE], + /* fork_disable_dump= */endswith(context->meta[META_EXE], "systemd-coredump"), /* avoid loops */ + &stacktrace, + &json_metadata); #endif log: |