This is the mail archive of the
cygwin-cvs@cygwin.com
mailing list for the Cygwin project.
[newlib-cygwin] Cygwin: AF_UNIX: fix a couple of thinkos and typos
- From: Corinna Vinschen <corinna at sourceware dot org>
- To: cygwin-cvs at sourceware dot org
- Date: 6 Mar 2018 18:11:38 -0000
- Subject: [newlib-cygwin] Cygwin: AF_UNIX: fix a couple of thinkos and typos
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=e2909e2805056e3f90533f8d97e79b664079de2f
commit e2909e2805056e3f90533f8d97e79b664079de2f
Author: Corinna Vinschen <corinna@vinschen.de>
Date: Tue Mar 6 18:42:12 2018 +0100
Cygwin: AF_UNIX: fix a couple of thinkos and typos
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diff:
---
winsup/cygwin/fhandler_socket_unix.cc | 44 ++++++++++++++---------------------
1 file changed, 18 insertions(+), 26 deletions(-)
diff --git a/winsup/cygwin/fhandler_socket_unix.cc b/winsup/cygwin/fhandler_socket_unix.cc
index 9d3c316..9ea9f45 100644
--- a/winsup/cygwin/fhandler_socket_unix.cc
+++ b/winsup/cygwin/fhandler_socket_unix.cc
@@ -57,8 +57,8 @@
- [sd] is s for SOCK_STREAM, d for SOCK_DGRAM
- <uniq_id> is an 8 byte hex unique number
- Note: We use MAX_PATH here for convenience where sufficient. It's
- big enough to hold sun_path's as well as pipe names so we don't have
+ Note: We use MAX_PATH below for convenience where sufficient. It's
+ big enough to hold sun_paths as well as pipe names so we don't have
to use tmp_pathbuf as often.
*/
/* Character length of pipe name, excluding trailing NUL. */
@@ -156,7 +156,8 @@ fhandler_socket_unix::create_reparse_point (const sun_name_t *sun,
PREPARSE_GUID_DATA_BUFFER rp;
rep_pipe_name_t *rep_pipe_name;
- const DWORD data_len = sizeof (*rep_pipe_name) + pipe_name->Length;
+ const DWORD data_len = offsetof (rep_pipe_name_t, PipeName)
+ + pipe_name->Length + sizeof (WCHAR);
path_conv pc (sun->un.sun_path, PC_SYM_FOLLOW);
if (pc.error)
@@ -221,9 +222,8 @@ retry_after_transaction_error:
+ rp->ReparseDataLength, NULL, 0);
if (NT_SUCCESS (status))
{
- set_created_file_access (fh, pc, S_IRUSR | S_IWUSR
- | S_IRGRP | S_IWGRP
- | S_IROTH | S_IWOTH);
+ mode_t perms = (S_IRWXU | S_IRWXG | S_IRWXO) & ~cygheap->umask;
+ set_created_file_access (fh, pc, perms);
NtClose (fh);
/* We don't have to keep the file open, but the caller needs to
get a value != NULL to know the file creation went fine. */
@@ -253,8 +253,7 @@ HANDLE
fhandler_socket_unix::create_file (const sun_name_t *sun)
{
if (sun->un_len <= (socklen_t) sizeof (sa_family_t)
- || (sun->un_len == 3 && sun->un.sun_path[0] == '\0')
- || sun->un_len > (socklen_t) sizeof sun->un)
+ || (sun->un_len == 3 && sun->un.sun_path[0] == '\0'))
{
set_errno (EINVAL);
return NULL;
@@ -327,7 +326,7 @@ fhandler_socket_unix::open_reparse_point (sun_name_t *sun,
pc.get_object_attr (attr, sec_none_nih);
do
{
- status = NtOpenFile (&fh, GENERIC_READ | SYNCHRONIZE, &attr, &io,
+ status = NtOpenFile (&fh, FILE_GENERIC_READ, &attr, &io,
FILE_SHARE_VALID_FLAGS,
FILE_SYNCHRONOUS_IO_NONALERT
| FILE_NON_DIRECTORY_FILE
@@ -383,8 +382,7 @@ fhandler_socket_unix::open_file (sun_name_t *sun, int &type,
int ret = -1;
if (sun->un_len <= (socklen_t) sizeof (sa_family_t)
- || (sun->un_len == 3 && sun->un.sun_path[0] == '\0')
- || sun->un_len > (socklen_t) sizeof sun->un)
+ || (sun->un_len == 3 && sun->un.sun_path[0] == '\0'))
set_errno (EINVAL);
else if (sun->un.sun_path[0] == '\0')
ret = open_abstract_link (sun, pipe_name);
@@ -512,13 +510,13 @@ fhandler_socket_unix::create_pipe ()
max_instances = (get_socket_type () == SOCK_DGRAM) ? 1 : -1;
timeout.QuadPart = -500000;
status = NtCreateNamedPipeFile (&ph, access, &attr, &io, sharing,
- FILE_CREATE, FILE_SYNCHRONOUS_IO_NONALERT,
+ FILE_CREATE, 0,
FILE_PIPE_MESSAGE_TYPE,
FILE_PIPE_MESSAGE_MODE,
nonblocking, max_instances,
rmem (), wmem (), &timeout);
if (!NT_SUCCESS (status))
- system_printf ("NtCreateNamedPipeFile: %y", status);
+ __seterrno_from_nt_status (status);
return ph;
}
@@ -554,13 +552,13 @@ fhandler_socket_unix::create_pipe_instance ()
max_instances = (get_socket_type () == SOCK_DGRAM) ? 1 : -1;
timeout.QuadPart = -500000;
status = NtCreateNamedPipeFile (&ph, access, &attr, &io, sharing,
- FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT,
+ FILE_OPEN, 0,
FILE_PIPE_MESSAGE_TYPE,
FILE_PIPE_MESSAGE_MODE,
nonblocking, max_instances,
rmem (), wmem (), &timeout);
if (!NT_SUCCESS (status))
- system_printf ("NtCreateNamedPipeFile: %y", status);
+ __seterrno_from_nt_status (status);
return ph;
}
@@ -715,12 +713,9 @@ fhandler_socket_unix::getsockname (struct sockaddr *name, int *namelen)
if (get_sun_path ())
memcpy (&sun, &get_sun_path ()->un, get_sun_path ()->un_len);
else
- {
- sun.un_len = sizeof (sa_family_t);
- sun.un.sun_family = AF_UNIX;
- sun.un.sun_path[0] = '\0';
- }
+ sun.un_len = 0;
memcpy (name, &sun, MIN (*namelen, sun.un_len));
+ *namelen = sun.un_len;
return 0;
}
@@ -732,12 +727,9 @@ fhandler_socket_unix::getpeername (struct sockaddr *name, int *namelen)
if (get_peer_sun_path ())
memcpy (&sun, &get_peer_sun_path ()->un, get_peer_sun_path ()->un_len);
else
- {
- sun.un_len = sizeof (sa_family_t);
- sun.un.sun_family = AF_UNIX;
- sun.un.sun_path[0] = '\0';
- }
+ sun.un_len = 0;
memcpy (name, &sun, MIN (*namelen, sun.un_len));
+ *namelen = sun.un_len;
return 0;
}
@@ -1013,7 +1005,7 @@ fhandler_socket_unix::getsockopt (int level, int optname, const void *optval,
int
fhandler_socket_unix::ioctl (unsigned int cmd, void *p)
{
- int ret;
+ int ret = -1;
switch (cmd)
{