diff options
author | marcus <marcus@FreeBSD.org> | 2005-07-13 17:28:11 +0000 |
---|---|---|
committer | marcus <marcus@FreeBSD.org> | 2005-07-13 17:28:11 +0000 |
commit | 5b352640f8efaf44f5f7d243077931d85c964697 (patch) | |
tree | 69cc5417a83055b8f3ae03d914329fd320e074cb /sbin | |
parent | 087a48f8855ca2a0d166722151f081102d04ee4e (diff) | |
download | FreeBSD-src-5b352640f8efaf44f5f7d243077931d85c964697.zip FreeBSD-src-5b352640f8efaf44f5f7d243077931d85c964697.tar.gz |
* Open permissions on /var/run/devd.pipe so that any user can read devd events
from this socket
* Enable non-blocking I/O on devd.pipe to keep clients from wedging devd.
If a write(2) on devd.pipe would block, the client in question will be
removed [1]
Requested by: rwatson [1]
Approved by: imp
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/devd/devd.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sbin/devd/devd.cc b/sbin/devd/devd.cc index 9101ecf..ad3ef43 100644 --- a/sbin/devd/devd.cc +++ b/sbin/devd/devd.cc @@ -672,11 +672,13 @@ create_socket(const char *name) strlcpy(sun.sun_path, name, sizeof(sun.sun_path)); slen = SUN_LEN(&sun); unlink(name); + if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) + err(1, "fcntl"); if (bind(fd, (struct sockaddr *) & sun, slen) < 0) err(1, "bind"); listen(fd, 4); chown(name, 0, 0); /* XXX - root.wheel */ - chmod(name, 0660); + chmod(name, 0666); return (fd); } |