coredump: minor modernizations

This commit is contained in:
Lennart Poettering
2024-10-31 23:08:11 +01:00
parent 393d0d2b69
commit ea8eb370e7
+17 -10
View File
@@ -773,9 +773,12 @@ static int get_process_container_parent_cmdline(pid_t pid, char** cmdline) {
}
static int change_uid_gid(const Context *context) {
int r;
assert(context);
uid_t uid = context->uid;
gid_t gid = context->gid;
int r;
if (uid_is_system(uid)) {
const char *user = "systemd-coredump";
@@ -1233,7 +1236,7 @@ static int send_iovec(const struct iovec_wrapper *iovw, int input_fd, int mounts
* what we want to send, and the second one contains
* the trailing dots. */
copy[0] = iovw->iovec[i];
copy[1] = IOVEC_MAKE(((char[]){'.', '.', '.'}), 3);
copy[1] = IOVEC_MAKE(((const char[]){'.', '.', '.'}), 3);
mh.msg_iov = copy;
mh.msg_iovlen = 2;
@@ -1265,9 +1268,7 @@ static int gather_pid_metadata_from_argv(
Context *context,
int argc, char **argv) {
_cleanup_free_ char *free_timestamp = NULL;
int r, signo;
char *t;
assert(iovw);
assert(context);
@@ -1281,8 +1282,8 @@ static int gather_pid_metadata_from_argv(
argc, _META_ARGV_MAX);
for (int i = 0; i < _META_ARGV_MAX; i++) {
t = argv[i];
_cleanup_free_ char *buf = NULL;
const char *t = argv[i];
switch (i) {
@@ -1291,9 +1292,11 @@ static int gather_pid_metadata_from_argv(
* zeroes, so that the kernel-supplied 1s granularity timestamps
* becomes 1μs granularity, i.e. the granularity systemd usually
* operates in. */
t = free_timestamp = strjoin(argv[i], "000000");
if (!t)
buf = strjoin(argv[i], "000000");
if (!buf)
return log_oom();
t = buf;
break;
case META_ARGV_SIGNAL:
@@ -1432,7 +1435,7 @@ static int gather_pid_metadata_from_procfs(struct iovec_wrapper *iovw, Context *
return save_context(context, iovw);
}
static int send_ucred(int transport_fd, struct ucred *ucred) {
static int send_ucred(int transport_fd, const struct ucred *ucred) {
CMSG_BUFFER_TYPE(CMSG_SPACE(sizeof(struct ucred))) control = {};
struct msghdr mh = {
.msg_control = &control,
@@ -1441,6 +1444,7 @@ static int send_ucred(int transport_fd, struct ucred *ucred) {
struct cmsghdr *cmsg;
assert(transport_fd >= 0);
assert(ucred);
cmsg = CMSG_FIRSTHDR(&mh);
*cmsg = (struct cmsghdr) {
@@ -1463,6 +1467,7 @@ static int receive_ucred(int transport_fd, struct ucred *ret_ucred) {
struct ucred *ucred = NULL;
ssize_t n;
assert(transport_fd >= 0);
assert(ret_ucred);
n = recvmsg_safe(transport_fd, &mh, 0);
@@ -1588,12 +1593,12 @@ static int forward_coredump_to_container(Context *context) {
char buf[DECIMAL_STR_MAX(pid_t)];
const char *t = context->meta[i];
/* Patch some of the fields with the translated ucred data */
switch (i) {
case META_ARGV_PID:
xsprintf(buf, PID_FMT, ucred.pid);
t = buf;
break;
case META_ARGV_UID:
@@ -1818,6 +1823,8 @@ static int process_backtrace(int argc, char *argv[]) {
char *message;
int r;
assert(argc >= 2);
log_debug("Processing backtrace on stdin...");
iovw = iovw_new();