summaryrefslogtreecommitdiffstats
path: root/network/netcat-openbsd/patches/0011-set-TCP-MD5SIG-correctly-for-client-connections.patch
diff options
context:
space:
mode:
Diffstat (limited to 'network/netcat-openbsd/patches/0011-set-TCP-MD5SIG-correctly-for-client-connections.patch')
-rw-r--r--network/netcat-openbsd/patches/0011-set-TCP-MD5SIG-correctly-for-client-connections.patch101
1 files changed, 0 insertions, 101 deletions
diff --git a/network/netcat-openbsd/patches/0011-set-TCP-MD5SIG-correctly-for-client-connections.patch b/network/netcat-openbsd/patches/0011-set-TCP-MD5SIG-correctly-for-client-connections.patch
deleted file mode 100644
index c274549672..0000000000
--- a/network/netcat-openbsd/patches/0011-set-TCP-MD5SIG-correctly-for-client-connections.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From: Thomas Habets <habets@google.com>
-Date: Sat, 18 Feb 2017 21:07:22 +0000
-Subject: Set TCP MD5SIG correctly for client connections
-
----
- netcat.c | 31 ++++++++++++++++++++++++-------
- 1 file changed, 24 insertions(+), 7 deletions(-)
-
---- a/netcat.c
-+++ b/netcat.c
-@@ -46,6 +46,9 @@
- #ifdef __linux__
- # include <linux/in6.h>
- #endif
-+#if defined(TCP_MD5SIG) && defined(TCP_MD5SIG_MAXKEYLEN)
-+# include <bsd/readpassphrase.h>
-+#endif
-
- #ifndef IPTOS_LOWDELAY
- # define IPTOS_LOWDELAY 0x10
-@@ -175,6 +178,9 @@ FILE *Zflag; /* file to save peer ce
- int Cflag = 0; /* CRLF line-ending */
- # endif
-
-+# if defined(TCP_MD5SIG) && defined(TCP_MD5SIG_MAXKEYLEN)
-+char Sflag_password[TCP_MD5SIG_MAXKEYLEN];
-+# endif
- int recvcount, recvlimit;
- int timeout = -1;
- int family = AF_UNSPEC;
-@@ -205,7 +211,7 @@ int udptest(int);
- int unix_bind(char *, int);
- int unix_connect(char *);
- int unix_listen(char *);
--void set_common_sockopts(int, int);
-+void set_common_sockopts(int, const struct sockaddr *);
- int process_tos_opt(char *, int *);
- # if defined(TLS)
- int process_tls_opt(char *, int *);
-@@ -458,7 +464,10 @@ main(int argc, char *argv[])
- break;
- # endif
- case 'S':
--# if defined(TCP_MD5SIG)
-+# if defined(TCP_MD5SIG) && defined(TCP_MD5SIG_MAXKEYLEN)
-+ if (readpassphrase("TCP MD5SIG password: ",
-+ Sflag_password, TCP_MD5SIG_MAXKEYLEN, RPP_REQUIRE_TTY) == NULL)
-+ errx(1, "Unable to read TCP MD5SIG password");
- Sflag = 1;
- # else
- errx(1, "no TCP MD5 signature support available");
-@@ -1170,7 +1179,7 @@ remote_connect(const char *host, const c
- freeaddrinfo(ares);
- }
-
-- set_common_sockopts(s, res->ai_family);
-+ set_common_sockopts(s, res->ai_addr);
- char *proto = proto_name(uflag, dccpflag);
-
- if ((error = connect_with_timeout(s, res->ai_addr, res->ai_addrlen, timeout)) == CONNECTION_SUCCESS)
-@@ -1324,7 +1333,7 @@ local_listen(const char *host, const cha
- err(1, NULL);
- # endif
-
-- set_common_sockopts(s, res->ai_family);
-+ set_common_sockopts(s, res->ai_addr);
-
- if (bind(s, (struct sockaddr *)res->ai_addr,
- res->ai_addrlen) == 0)
-@@ -1856,9 +1865,10 @@ udptest(int s)
- }
-
- void
--set_common_sockopts(int s, int af)
-+set_common_sockopts(int s, const struct sockaddr* sa)
- {
- int x = 1;
-+ int af = sa->sa_family;
-
- # if defined(SO_BROADCAST)
- if (bflag) {
-@@ -1869,10 +1879,17 @@ set_common_sockopts(int s, int af)
- err(1, NULL);
- }
- # endif
--# if defined(TCP_MD5SIG)
-+# if defined(TCP_MD5SIG) && defined(TCP_MD5SIG_MAXKEYLEN)
- if (Sflag) {
-+ struct tcp_md5sig sig;
-+ memset(&sig, 0, sizeof(sig));
-+ memcpy(&sig.tcpm_addr, sa, sizeof(struct sockaddr_storage));
-+ sig.tcpm_keylen = TCP_MD5SIG_MAXKEYLEN < strlen(Sflag_password)
-+ ? TCP_MD5SIG_MAXKEYLEN
-+ : strlen(Sflag_password);
-+ strlcpy(sig.tcpm_key, Sflag_password, sig.tcpm_keylen);
- if (setsockopt(s, IPPROTO_TCP, TCP_MD5SIG,
-- &x, sizeof(x)) == -1)
-+ &sig, sizeof(sig)) == -1)
- err(1, NULL);
- }
- # endif