diff options
author | Lennart Poettering <lennart@poettering.net> | 2023-04-13 10:49:15 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2023-04-13 10:49:23 +0200 |
commit | ca918f63b7a98442d2925c0a668c911d8140215b (patch) | |
tree | f45c36386f7a8d8c1ca733c65778f96670c74be3 /src/udev/udev-ctrl.c | |
parent | b1d02191366794dedc345a4c6dc9ebb2adf53bf6 (diff) | |
download | systemd-ca918f63b7a98442d2925c0a668c911d8140215b.tar.gz |
udev,sd-device: use CMSG_FIND_DATA() more
Diffstat (limited to 'src/udev/udev-ctrl.c')
-rw-r--r-- | src/udev/udev-ctrl.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index 24180f9418..7d9a8c018f 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -161,7 +161,6 @@ static int udev_ctrl_connection_event_handler(sd_event_source *s, int fd, uint32 .msg_control = &control, .msg_controllen = sizeof(control), }; - struct cmsghdr *cmsg; struct ucred *cred; ssize_t size; @@ -185,15 +184,12 @@ static int udev_ctrl_connection_event_handler(sd_event_source *s, int fd, uint32 cmsg_close_all(&smsg); - cmsg = CMSG_FIRSTHDR(&smsg); - - if (!cmsg || cmsg->cmsg_type != SCM_CREDENTIALS) { + cred = CMSG_FIND_DATA(&smsg, SOL_SOCKET, SCM_CREDENTIALS, struct ucred); + if (!cred) { log_error("No sender credentials received, ignoring message"); return 0; } - cred = (struct ucred *) CMSG_DATA(cmsg); - if (cred->uid != 0) { log_error("Invalid sender uid "UID_FMT", ignoring message", cred->uid); return 0; |