summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch96
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,