From: Lennart Poettering Date: Thu, 31 Oct 2024 16:02:59 +0000 (+0100) Subject: coredump: make check that all argv[] meta data fields are passed strict X-Git-Tag: v257-rc1~68^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=098c3975acb3df61eedfe471fca27c21f13cf04c;p=thirdparty%2Fsystemd.git coredump: make check that all argv[] meta data fields are passed strict Otherwise, if some field is not supplied we might end up parsing a NULL string later. Let's catch that early. --- diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c index f2acf8c37f7..c3e97325e0c 100644 --- a/src/coredump/coredump.c +++ b/src/coredump/coredump.c @@ -1045,9 +1045,10 @@ static int context_parse_iovw(Context *context, struct iovec_wrapper *iovw) { memory_startswith(iovec->iov_base, iovec->iov_len, "COREDUMP_SIGNAL_NAME="); } - if (!context->meta[META_ARGV_PID]) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Failed to find the PID of crashing process"); + /* The basic fields from argv[] should always be there, refuse early if not */ + for (int i = 0; i < _META_ARGV_MAX; i++) + if (!context->meta[i]) + return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "A required (%s) has not been sent, aborting.", meta_field_names[i]); pid_t parsed_pid; r = parse_pid(context->meta[META_ARGV_PID], &parsed_pid);