aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Blunt <git@sebastianblunt.com>2022-04-15 23:48:50 -0700
committerBrent Cook <busterb@gmail.com>2022-04-19 15:09:56 -0500
commitc35f5f1ded049e7e439d0b5645904050aeb28097 (patch)
tree59d6c72e518f0013f3eda35d6df190c2a7ae77f0
parentac56ad740a305476dbd7e1084ea0e60d6389b1d8 (diff)
downloadportable-c35f5f1ded049e7e439d0b5645904050aeb28097.tar.gz
portable-c35f5f1ded049e7e439d0b5645904050aeb28097.tar.bz2
portable-c35f5f1ded049e7e439d0b5645904050aeb28097.zip
Fix unreachable nc portability shim
This fixes nc failing to run on darwin due to it incorrectly setting the linux-specific SOCK_NONBLOCK flag on connect. nc already had a portability shim in apps/nc/compat/sys/socket.h, which kicks in if SOCK_NONBLOCK is undefined. But that header includes include/compat/sys/socket.h, which also has a portability shim that defines a default value for SOCK_NONBLOCK if it's undefined. Thus the first portability shim was unreachable. Fixes this by moving the NEED_SOCKET_FLAGS flag into the outer shim, and having the inner shim activate if NEED_SOCKET_FLAGS is defined. This closes https://github.com/libressl-portable/portable/issues/631
-rw-r--r--apps/nc/compat/sys/socket.h3
-rw-r--r--include/compat/sys/socket.h1
2 files changed, 2 insertions, 2 deletions
diff --git a/apps/nc/compat/sys/socket.h b/apps/nc/compat/sys/socket.h
index 13eb380..2c7ee4f 100644
--- a/apps/nc/compat/sys/socket.h
+++ b/apps/nc/compat/sys/socket.h
@@ -6,8 +6,7 @@
6#ifndef _WIN32 6#ifndef _WIN32
7#include_next <sys/socket.h> 7#include_next <sys/socket.h>
8 8
9#if !defined(SOCK_NONBLOCK) || !defined(SOCK_CLOEXEC) 9#if defined(NEED_SOCKET_FLAGS)
10#define NEED_SOCKET_FLAGS
11int _socket(int domain, int type, int protocol); 10int _socket(int domain, int type, int protocol);
12#ifndef SOCKET_FLAGS_PRIV 11#ifndef SOCKET_FLAGS_PRIV
13#define socket(d, t, p) _socket(d, t, p) 12#define socket(d, t, p) _socket(d, t, p)
diff --git a/include/compat/sys/socket.h b/include/compat/sys/socket.h
index 10eb05f..2f0b197 100644
--- a/include/compat/sys/socket.h
+++ b/include/compat/sys/socket.h
@@ -10,6 +10,7 @@
10#endif 10#endif
11 11
12#if !defined(SOCK_NONBLOCK) || !defined(SOCK_CLOEXEC) 12#if !defined(SOCK_NONBLOCK) || !defined(SOCK_CLOEXEC)
13#define NEED_SOCKET_FLAGS
13#define SOCK_CLOEXEC 0x8000 /* set FD_CLOEXEC */ 14#define SOCK_CLOEXEC 0x8000 /* set FD_CLOEXEC */
14#define SOCK_NONBLOCK 0x4000 /* set O_NONBLOCK */ 15#define SOCK_NONBLOCK 0x4000 /* set O_NONBLOCK */
15int bsd_socketpair(int domain, int type, int protocol, int socket_vector[2]); 16int bsd_socketpair(int domain, int type, int protocol, int socket_vector[2]);