X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fudev-ctrl.c;h=1e91ec20a1f8930460a91016daa22d8be8bcbada;hb=8d0cfd6c8858d4f32d1eda122eb5a61e96e6ac54;hp=662bd33de889d38308dabaa35712ba3edc86eeaa;hpb=97fec53e5e91222f43fc89d0ad45fa197742a363;p=elogind.git diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index 662bd33de..1e91ec20a 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -75,7 +75,7 @@ struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd) struct udev_ctrl *uctrl; const int on = 1; - uctrl = calloc(1, sizeof(struct udev_ctrl)); + uctrl = new0(struct udev_ctrl, 1); if (uctrl == NULL) return NULL; uctrl->refcount = 1; @@ -84,7 +84,7 @@ struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd) if (fd < 0) { uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0); if (uctrl->sock < 0) { - log_error("error getting socket: %m\n"); + log_error("error getting socket: %m"); udev_ctrl_unref(uctrl); return NULL; } @@ -118,14 +118,14 @@ int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl) if (err < 0) { err = -errno; - log_error("bind failed: %m\n"); + log_error("bind failed: %m"); return err; } err = listen(uctrl->sock, 0); if (err < 0) { err = -errno; - log_error("listen failed: %m\n"); + log_error("listen failed: %m"); return err; } @@ -140,7 +140,7 @@ struct udev *udev_ctrl_get_udev(struct udev_ctrl *uctrl) return uctrl->udev; } -struct udev_ctrl *udev_ctrl_ref(struct udev_ctrl *uctrl) +static struct udev_ctrl *udev_ctrl_ref(struct udev_ctrl *uctrl) { if (uctrl == NULL) return NULL; @@ -180,11 +180,11 @@ int udev_ctrl_get_fd(struct udev_ctrl *uctrl) struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) { struct udev_ctrl_connection *conn; - struct ucred ucred; - socklen_t slen; + struct ucred ucred = {}; const int on = 1; + int r; - conn = calloc(1, sizeof(struct udev_ctrl_connection)); + conn = new(struct udev_ctrl_connection, 1); if (conn == NULL) return NULL; conn->refcount = 1; @@ -193,18 +193,18 @@ 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("unable to receive ctrl connection: %m\n"); + log_error("unable to receive ctrl connection: %m"); goto err; } /* check peer credential of connection */ - slen = sizeof(ucred); - if (getsockopt(conn->sock, SOL_SOCKET, SO_PEERCRED, &ucred, &slen) < 0) { - log_error("unable to receive credentials of ctrl connection: %m\n"); + r = getpeercred(conn->sock, &ucred); + if (r < 0) { + log_error("unable to receive credentials of ctrl connection: %s", strerror(-r)); goto err; } if (ucred.uid > 0) { - log_error("sender uid=%i, message ignored\n", ucred.uid); + log_error("sender uid=%i, message ignored", ucred.uid); goto err; } @@ -246,7 +246,7 @@ static int ctrl_send(struct udev_ctrl *uctrl, enum udev_ctrl_msg_type type, int struct udev_ctrl_msg_wire ctrl_msg_wire; int err = 0; - memset(&ctrl_msg_wire, 0x00, sizeof(struct udev_ctrl_msg_wire)); + memzero(&ctrl_msg_wire, sizeof(struct udev_ctrl_msg_wire)); strcpy(ctrl_msg_wire.version, "udev-" VERSION); ctrl_msg_wire.magic = UDEV_CTRL_MAGIC; ctrl_msg_wire.type = type; @@ -359,7 +359,7 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) udev_ctrl_connection_ref(conn); /* wait for the incoming message */ - for(;;) { + for (;;) { struct pollfd pfd[1]; int r; @@ -372,11 +372,11 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) continue; goto err; } else if (r == 0) { - log_error("timeout waiting for ctrl message\n"); + log_error("timeout waiting for ctrl message"); goto err; } else { if (!(pfd[0].revents & POLLIN)) { - log_error("ctrl connection error: %m\n"); + log_error("ctrl connection error: %m"); goto err; } } @@ -389,24 +389,24 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) size = recvmsg(conn->sock, &smsg, 0); if (size < 0) { - log_error("unable to receive ctrl message: %m\n"); + log_error("unable to receive ctrl message: %m"); goto err; } cmsg = CMSG_FIRSTHDR(&smsg); cred = (struct ucred *) CMSG_DATA(cmsg); if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) { - log_error("no sender credentials received, message ignored\n"); + log_error("no sender credentials received, message ignored"); goto err; } if (cred->uid != 0) { - log_error("sender uid=%i, message ignored\n", cred->uid); + log_error("sender uid=%i, message ignored", 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\n", uctrl_msg->ctrl_msg_wire.magic); + log_error("message magic 0x%08x doesn't match, ignore it", uctrl_msg->ctrl_msg_wire.magic); goto err; } @@ -416,14 +416,6 @@ err: return NULL; } -struct udev_ctrl_msg *udev_ctrl_msg_ref(struct udev_ctrl_msg *ctrl_msg) -{ - if (ctrl_msg == NULL) - return NULL; - ctrl_msg->refcount++; - return ctrl_msg; -} - struct udev_ctrl_msg *udev_ctrl_msg_unref(struct udev_ctrl_msg *ctrl_msg) { if (ctrl_msg == NULL)