X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2Fudev%2Fudev-ctrl.c;h=f2238ae14edd8e6686dd79ddb423956c58f5f266;hb=de38f06f52fb172c60485376b8648d7208bb5a90;hp=b590a1e4bb3eddf7b8bb9e86f3da94b6d239c318;hpb=84711d20b0b11347bc3c7d25fc07953fc65152e0;p=thirdparty%2Fsystemd.git diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index b590a1e4bb3..f2238ae14ed 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -20,6 +20,7 @@ #include "alloc-util.h" #include "fd-util.h" #include "format-util.h" +#include "io-util.h" #include "socket-util.h" #include "strxcpyx.h" #include "udev-ctrl.h" @@ -41,7 +42,7 @@ enum udev_ctrl_msg_type { struct udev_ctrl_msg_wire { char version[16]; - unsigned int magic; + unsigned magic; enum udev_ctrl_msg_type type; union { int intval; @@ -76,14 +77,14 @@ struct udev_ctrl *udev_ctrl_new_from_fd(int fd) { int r; uctrl = new0(struct udev_ctrl, 1); - if (uctrl == NULL) + if (!uctrl) return NULL; uctrl->n_ref = 1; if (fd < 0) { uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0); if (uctrl->sock < 0) { - log_error_errno(errno, "error getting socket: %m"); + log_error_errno(errno, "Failed to create socket: %m"); udev_ctrl_unref(uctrl); return NULL; } @@ -98,7 +99,7 @@ struct udev_ctrl *udev_ctrl_new_from_fd(int fd) { */ r = setsockopt_int(uctrl->sock, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - log_warning_errno(r, "could not set SO_PASSCRED: %m"); + log_warning_errno(r, "Failed to set SO_PASSCRED: %m"); uctrl->saddr.un = (struct sockaddr_un) { .sun_family = AF_UNIX, @@ -124,11 +125,11 @@ int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl) { } if (err < 0) - return log_error_errno(errno, "bind failed: %m"); + return log_error_errno(errno, "Failed to bind socket: %m"); err = listen(uctrl->sock, 0); if (err < 0) - return log_error_errno(errno, "listen failed: %m"); + return log_error_errno(errno, "Failed to listen: %m"); uctrl->bound = true; uctrl->cleanup_socket = true; @@ -147,7 +148,7 @@ DEFINE_PRIVATE_TRIVIAL_REF_FUNC(struct udev_ctrl, udev_ctrl); DEFINE_TRIVIAL_UNREF_FUNC(struct udev_ctrl, udev_ctrl, udev_ctrl_free); int udev_ctrl_cleanup(struct udev_ctrl *uctrl) { - if (uctrl == NULL) + if (!uctrl) return 0; if (uctrl->cleanup_socket) sockaddr_un_unlink(&uctrl->saddr.un); @@ -155,7 +156,7 @@ int udev_ctrl_cleanup(struct udev_ctrl *uctrl) { } int udev_ctrl_get_fd(struct udev_ctrl *uctrl) { - if (uctrl == NULL) + if (!uctrl) return -EINVAL; return uctrl->sock; } @@ -166,7 +167,7 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) { int r; conn = new(struct udev_ctrl_connection, 1); - if (conn == NULL) + if (!conn) return NULL; conn->n_ref = 1; conn->uctrl = uctrl; @@ -174,25 +175,25 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) { conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK); if (conn->sock < 0) { if (errno != EINTR) - log_error_errno(errno, "unable to receive ctrl connection: %m"); + log_error_errno(errno, "Failed to receive ctrl connection: %m"); goto err; } /* check peer credential of connection */ r = getpeercred(conn->sock, &ucred); if (r < 0) { - log_error_errno(r, "unable to receive credentials of ctrl connection: %m"); + log_error_errno(r, "Failed to receive credentials of ctrl connection: %m"); goto err; } if (ucred.uid > 0) { - log_error("sender uid="UID_FMT", message ignored", ucred.uid); + log_error("Sender uid="UID_FMT", message ignored", ucred.uid); goto err; } /* enable receiving of the sender credentials in the messages */ r = setsockopt_int(conn->sock, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - log_warning_errno(r, "could not set SO_PASSCRED: %m"); + log_warning_errno(r, "Failed to set SO_PASSCRED: %m"); udev_ctrl_ref(uctrl); return conn; @@ -220,7 +221,7 @@ static int ctrl_send(struct udev_ctrl *uctrl, enum udev_ctrl_msg_type type, int ctrl_msg_wire.magic = UDEV_CTRL_MAGIC; ctrl_msg_wire.type = type; - if (buf != NULL) + if (buf) strscpy(ctrl_msg_wire.buf, sizeof(ctrl_msg_wire.buf), buf); else ctrl_msg_wire.intval = intval; @@ -245,7 +246,7 @@ static int ctrl_send(struct udev_ctrl *uctrl, enum udev_ctrl_msg_type type, int pfd[0].fd = uctrl->sock; pfd[0].events = POLLIN; r = poll(pfd, 1, timeout * MSEC_PER_SEC); - if (r < 0) { + if (r < 0) { if (errno == EINTR) continue; err = -errno; @@ -312,7 +313,7 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) { struct ucred *cred; uctrl_msg = new0(struct udev_ctrl_msg, 1); - if (uctrl_msg == NULL) + if (!uctrl_msg) return NULL; uctrl_msg->n_ref = 1; uctrl_msg->conn = conn; @@ -327,16 +328,16 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) { pfd[0].events = POLLIN; r = poll(pfd, 1, 10000); - if (r < 0) { + if (r < 0) { if (errno == EINTR) continue; goto err; } else if (r == 0) { - log_error("timeout waiting for ctrl message"); + log_error("Timeout waiting for ctrl message"); goto err; } else { if (!(pfd[0].revents & POLLIN)) { - log_error_errno(errno, "ctrl connection error: %m"); + log_error("Invalid ctrl connection: %m"); goto err; } } @@ -344,12 +345,11 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) { break; } - iov.iov_base = &uctrl_msg->ctrl_msg_wire; - iov.iov_len = sizeof(struct udev_ctrl_msg_wire); + iov = IOVEC_MAKE(&uctrl_msg->ctrl_msg_wire, sizeof(struct udev_ctrl_msg_wire)); size = recvmsg(conn->sock, &smsg, 0); - if (size < 0) { - log_error_errno(errno, "unable to receive ctrl message: %m"); + if (size < 0) { + log_error_errno(errno, "Failed to receive ctrl message: %m"); goto err; } @@ -357,20 +357,20 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) { cmsg = CMSG_FIRSTHDR(&smsg); - if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) { - log_error("no sender credentials received, message ignored"); + if (!cmsg || cmsg->cmsg_type != SCM_CREDENTIALS) { + log_error("No sender credentials received, ignoring message"); goto err; } cred = (struct ucred *) CMSG_DATA(cmsg); if (cred->uid != 0) { - log_error("sender uid="UID_FMT", message ignored", cred->uid); + log_error("Sender uid="UID_FMT", ignoring message", cred->uid); goto err; } if (uctrl_msg->ctrl_msg_wire.magic != UDEV_CTRL_MAGIC) { - log_error("message magic 0x%08x doesn't match, ignore it", uctrl_msg->ctrl_msg_wire.magic); + log_error("Message magic 0x%08x doesn't match, ignoring", uctrl_msg->ctrl_msg_wire.magic); goto err; }