diff options
Diffstat (limited to 'net-analyzer/openbsd-netcat/files/openbsd-netcat-1.195-darwin.patch')
-rw-r--r-- | net-analyzer/openbsd-netcat/files/openbsd-netcat-1.195-darwin.patch | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/net-analyzer/openbsd-netcat/files/openbsd-netcat-1.195-darwin.patch b/net-analyzer/openbsd-netcat/files/openbsd-netcat-1.195-darwin.patch new file mode 100644 index 000000000000..489eceedf6c0 --- /dev/null +++ b/net-analyzer/openbsd-netcat/files/openbsd-netcat-1.195-darwin.patch @@ -0,0 +1,96 @@ +Allow compilation on Darwin + +diff --git a/netcat.c b/netcat.c +index a0fb51b..bbb5dd1 100644 +--- a/netcat.c ++++ b/netcat.c +@@ -51,11 +51,16 @@ + # include <bsd/readpassphrase.h> + #endif + ++#ifndef IPTOS_LOWCOST ++# define IPTOS_LOWCOST 0x02 ++#endif + #ifndef IPTOS_LOWDELAY + # define IPTOS_LOWDELAY 0x10 + # define IPTOS_THROUGHPUT 0x08 + # define IPTOS_RELIABILITY 0x04 +-# define IPTOS_LOWCOST 0x02 + # define IPTOS_MINCOST IPTOS_LOWCOST + #endif /* IPTOS_LOWDELAY */ ++#ifndef SOCK_CLOEXEC ++# define SOCK_CLOEXEC 0 ++#endif + +@@ -108,8 +110,9 @@ + # include <tls.h> + #endif + #include <unistd.h> +-#include <bsd/stdlib.h> +-#include <bsd/string.h> ++#include <stdlib.h> ++#include <string.h> ++#include <ctype.h> + + #include "atomicio.h" + +@@ -814,9 +814,8 @@ + # endif + } else { + len = sizeof(cliaddr); +- connfd = accept4(s, (struct sockaddr *)&cliaddr, +- &len, SOCK_NONBLOCK); +- if (connfd == -1) { ++ connfd = accept(s, (struct sockaddr *)&cliaddr, &len); ++ if (connfd == -1 || fcntl(connfd, F_SETFL, O_NONBLOCK) == -1) { + /* For now, all errnos are fatal */ + err(1, "accept"); + } +@@ -1100,6 +1099,8 @@ + return -1; + } + } ++ if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) ++ return -1; + + memset(&s_un, 0, sizeof(struct sockaddr_un)); + s_un.sun_family = AF_UNIX; +@@ -1174,9 +1175,13 @@ + port, gai_strerror(error)); + + for (res = res0; res; res = res->ai_next) { +- if ((s = socket(res->ai_family, res->ai_socktype | +- SOCK_NONBLOCK, res->ai_protocol)) < 0) ++ if ((s = socket(res->ai_family, res->ai_socktype, ++ res->ai_protocol)) < 0) ++ continue; ++ if (fcntl(s, F_SETFL, O_NONBLOCK) == -1) { ++ close(s); + continue; ++ } + + /* Bind to a local port or source address if specified. */ + if (sflag || pflag) { +diff --git a/socks.c b/socks.c +index 9068f39..68b68e3 100644 +--- a/socks.c ++++ b/socks.c +@@ -38,7 +38,7 @@ + #include <string.h> + #include <unistd.h> + #include <resolv.h> +-#include <bsd/readpassphrase.h> ++#include <readpassphrase.h> + #include "atomicio.h" + + #define SOCKS_PORT "1080" +--- a/socks.c ++++ b/socks.c +@@ -53,5 +53,7 @@ + #define SOCKS_DOMAIN 3 + #define SOCKS_IPV6 4 + ++#define explicit_bzero(S,L) bzero(S,L) ++ + int remote_connect(const char *, const char *, struct addrinfo); + int socks_connect(const char *, const char *, struct addrinfo, |