This is the mail archive of the
cygwin-cvs@cygwin.com
mailing list for the Cygwin project.
[newlib-cygwin] Cygwin: AF_UNIX: fix SEGV when sending an empty socket name from connect
- From: Corinna Vinschen <corinna at sourceware dot org>
- To: cygwin-cvs at sourceware dot org
- Date: 7 Mar 2018 15:24:18 -0000
- Subject: [newlib-cygwin] Cygwin: AF_UNIX: fix SEGV when sending an empty socket name from connect
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=4de52a0fe1009d2a5318a731400dbf4280b184cc
commit 4de52a0fe1009d2a5318a731400dbf4280b184cc
Author: Corinna Vinschen <corinna@vinschen.de>
Date: Wed Mar 7 16:08:15 2018 +0100
Cygwin: AF_UNIX: fix SEGV when sending an empty socket name from connect
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diff:
---
winsup/cygwin/fhandler_socket_unix.cc | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/winsup/cygwin/fhandler_socket_unix.cc b/winsup/cygwin/fhandler_socket_unix.cc
index f320453..27ac958 100644
--- a/winsup/cygwin/fhandler_socket_unix.cc
+++ b/winsup/cygwin/fhandler_socket_unix.cc
@@ -540,15 +540,18 @@ fhandler_socket_unix::set_pipe_non_blocking (bool nonblocking)
int
fhandler_socket_unix::send_my_name ()
{
+ sun_name_t *sun;
size_t name_len = 0;
af_unix_pkt_hdr_t *packet;
NTSTATUS status;
IO_STATUS_BLOCK io;
AcquireSRWLockShared (&bind_lock);
- name_len = get_sun_path ()->un_len;
+ sun = get_sun_path ();
+ name_len = sun ? sun->un_len : 0;
packet = (af_unix_pkt_hdr_t *) alloca (sizeof *packet + name_len);
- memcpy (AF_UNIX_PKT_NAME (packet), &get_sun_path ()->un, name_len);
+ if (sun)
+ memcpy (AF_UNIX_PKT_NAME (packet), &sun->un, name_len);
ReleaseSRWLockShared (&bind_lock);
packet->init (0, name_len, 0, 0);