Cygwin: fhandler_socket_unix: Tiny cleanup

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2018-02-26 17:58:46 +01:00
parent d35bd22992
commit 4d75035244
1 changed files with 10 additions and 29 deletions

View File

@ -32,33 +32,7 @@
#include "miscfuncs.h"
#include "tls_pbuf.h"
extern "C" {
int sscanf (const char *, const char *, ...);
} /* End of "C" section */
#define ASYNC_MASK (FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT)
#define EVENT_MASK (FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE)
#define LOCK_EVENTS \
if (wsock_mtx && \
WaitForSingleObject (wsock_mtx, INFINITE) != WAIT_FAILED) \
{
#define UNLOCK_EVENTS \
ReleaseMutex (wsock_mtx); \
}
static inline mode_t
adjust_socket_file_mode (mode_t mode)
{
/* Kludge: Don't allow to remove read bit on socket files for
user/group/other, if the accompanying write bit is set. It would
be nice to have exact permissions on a socket file, but it's
necessary that somebody able to access the socket can always read
the contents of the socket file to avoid spurious "permission
denied" messages. */
return mode | ((mode & (S_IWUSR | S_IWGRP | S_IWOTH)) << 1);
}
/* cygwin internal: map sockaddr into internet domain address */
static int __unused
@ -612,7 +586,7 @@ fhandler_socket_unix::ioctl (unsigned int cmd, void *p)
int
fhandler_socket_unix::fcntl (int cmd, intptr_t arg)
{
int ret;
int ret = 0;
switch (cmd)
{
@ -630,7 +604,7 @@ fhandler_socket_unix::fcntl (int cmd, intptr_t arg)
int __reg2
fhandler_socket_unix::fstat (struct stat *buf)
{
int ret;
int ret = 0;
if (!get_sun_path () || get_sun_path ()[0] == '\0')
return fhandler_socket::fstat (buf);
@ -660,7 +634,14 @@ fhandler_socket_unix::fchmod (mode_t newmode)
return fhandler_socket::fchmod (newmode);
fhandler_disk_file fh (pc);
fh.get_device () = FH_FS;
return fh.fchmod (S_IFSOCK | adjust_socket_file_mode (newmode));
/* Kludge: Don't allow to remove read bit on socket files for
user/group/other, if the accompanying write bit is set. It would
be nice to have exact permissions on a socket file, but it's
necessary that somebody able to access the socket can always read
the contents of the socket file to avoid spurious "permission
denied" messages. */
newmode |= (newmode & (S_IWUSR | S_IWGRP | S_IWOTH)) << 1;
return fh.fchmod (S_IFSOCK | newmode);
}
int