commit:     ecaa995bf0658be5b8295624d14cc023b3c09e58
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Dec  6 10:33:27 2018 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Dec  6 10:33:42 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ecaa995b

net-analyzer/openbsd-netcat: complete Darwin patch to fix compilation

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
Package-Manager: Portage-2.3.51, Repoman-2.3.11

 .../files/openbsd-netcat-1.190-darwin.patch        | 47 ++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git 
a/net-analyzer/openbsd-netcat/files/openbsd-netcat-1.190-darwin.patch 
b/net-analyzer/openbsd-netcat/files/openbsd-netcat-1.190-darwin.patch
index 818b13a81a5..e1a462e746b 100644
--- a/net-analyzer/openbsd-netcat/files/openbsd-netcat-1.190-darwin.patch
+++ b/net-analyzer/openbsd-netcat/files/openbsd-netcat-1.190-darwin.patch
@@ -75,6 +75,53 @@ index a0fb51b..bbb5dd1 100644
  int
  main(int argc, char *argv[])
  {
+@@ -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");
+                               }
+@@ -1092,14 +1091,16 @@
+       int s, save_errno;
+ 
+       if (uflag) {
+-              if ((s = unix_bind(unix_dg_tmp_socket, SOCK_CLOEXEC)) < 0)
++              if ((s = unix_bind(unix_dg_tmp_socket, 0)) < 0)
+                       return -1;
+       } else {
+-              if ((s = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0)) < 0) {
++              if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
+                       errx(1,"create unix socket failed");
+                       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

Reply via email to