]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
coredumpctll: avoid unnecessary heap copy and decompression for field existence check...
authorLuca Boccassi <luca.boccassi@gmail.com>
Wed, 8 Apr 2026 20:34:47 +0000 (21:34 +0100)
committerGitHub <noreply@github.com>
Wed, 8 Apr 2026 20:34:47 +0000 (21:34 +0100)
`print_list()` and `print_info()` used `RETRIEVE()` to `strndup()` the
entire
`COREDUMP` field into a heap-allocated string, only to check whether it
exists.
With `sd_journal_set_data_threshold(j, 0)` in `print_info()`, this
copies the
full coredump binary (potentially hundreds of MB) to heap just to print
"Storage: journal".

This PR:

1. Makes `sd_journal_get_data()` output parameters optional
(`NULL`-safe), so
   callers can do pure existence checks without receiving the data.
2. Short-circuits `maybe_decompress_payload()` after
`decompress_startswith()`
   succeeds when neither output pointer is requested, skipping full blob
   decompression for compressed journal entries.
3. Switches coredumpctl to pass `NULL, NULL` for the existence checks
instead
   of heap-copying via `RETRIEVE()`.

1  2 
src/coredump/coredumpctl.c

Simple merge