summaryrefslogtreecommitdiff
path: root/udevsend.c
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-02-12 01:23:59 -0800
committerGreg KH <gregkh@suse.de>2005-04-26 21:32:26 -0700
commit7b1cbec91a51a8d8f1546935d942744b0f5a274e (patch)
tree02e9e34f27265a8c749f9568322f5029eeedad93 /udevsend.c
parentede4308a803131f473efed3dc3246ffac7163dfa (diff)
[PATCH] better credential patch
Here is a small improvement. We check for the type of message we receive and udevsend seems not to need all the credential setup stuff, the kernel will fill it for us. udevd now refuses to start as non root, cause it doesn't make any sense.
Diffstat (limited to 'udevsend.c')
-rw-r--r--udevsend.c31
1 files changed, 1 insertions, 30 deletions
diff --git a/udevsend.c b/udevsend.c
index b26c744422..b2fbcbbca6 100644
--- a/udevsend.c
+++ b/udevsend.c
@@ -133,13 +133,6 @@ int main(int argc, char* argv[])
struct sockaddr_un saddr;
socklen_t addrlen;
int started_daemon = 0;
- struct iovec iov;
- struct msghdr smsg;
- char cred_msg[CMSG_SPACE(sizeof(struct ucred))];
- struct cmsghdr *cmsg;
- struct ucred *cred;
-
-
#ifdef DEBUG
init_logging("udevsend");
@@ -183,32 +176,10 @@ int main(int argc, char* argv[])
size = build_hotplugmsg(&msg, action, devpath, subsystem, seq);
- /* prepare message with credentials to authenticate ourself */
- iov.iov_base = &msg;
- iov.iov_len = size;
-
- smsg.msg_name = &saddr;
- smsg.msg_namelen = addrlen;
- smsg.msg_iov = &iov;
- smsg.msg_iovlen = 1;
- smsg.msg_control = cred_msg;
- smsg.msg_controllen = CMSG_LEN(sizeof(struct ucred));;
- smsg.msg_flags = 0;
-
- cmsg = CMSG_FIRSTHDR(&smsg);
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_CREDENTIALS;
- cmsg->cmsg_len = sizeof(cred_msg);
- cred = (struct ucred *) CMSG_DATA(cmsg);
- cred->uid = getuid();
- cred->gid = getgid();
- cred->pid = getpid();
- cred->pid = getpid();
-
/* If we can't send, try to start daemon and resend message */
loop = UDEVSEND_CONNECT_RETRY;
while (loop--) {
- retval = sendmsg(sock, &smsg, 0);
+ retval = sendto(sock, &msg, size, 0, (struct sockaddr *)&saddr, addrlen);
if (retval != -1) {
retval = 0;
goto close_and_exit;