summaryrefslogtreecommitdiff
path: root/Ports/openssh/patches/0004-Remove-inet_aton-redefinition.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Ports/openssh/patches/0004-Remove-inet_aton-redefinition.patch')
-rw-r--r--Ports/openssh/patches/0004-Remove-inet_aton-redefinition.patch222
1 files changed, 222 insertions, 0 deletions
diff --git a/Ports/openssh/patches/0004-Remove-inet_aton-redefinition.patch b/Ports/openssh/patches/0004-Remove-inet_aton-redefinition.patch
new file mode 100644
index 0000000000..b0c239168d
--- /dev/null
+++ b/Ports/openssh/patches/0004-Remove-inet_aton-redefinition.patch
@@ -0,0 +1,222 @@
+From 5f5cc486c5de5e03aa2397431e881e356f94724f Mon Sep 17 00:00:00 2001
+From: Luke <luke.wilde@live.co.uk>
+Date: Sat, 30 Apr 2022 10:58:10 +0000
+Subject: [PATCH 4/7] Remove inet_aton() redefinition
+
+Co-Authored-By: Patrick Meyer <git@the-space.agency>
+---
+ openbsd-compat/inet_aton.c | 172 ++++++++++++++++----------------
+ openbsd-compat/openbsd-compat.h | 2 +-
+ 2 files changed, 87 insertions(+), 87 deletions(-)
+
+diff --git a/openbsd-compat/inet_aton.c b/openbsd-compat/inet_aton.c
+index 5efcc5f..14aa47b 100644
+--- a/openbsd-compat/inet_aton.c
++++ b/openbsd-compat/inet_aton.c
+@@ -53,7 +53,7 @@
+
+ #include "includes.h"
+
+-#if !defined(HAVE_INET_ATON)
++#if !defined(__serenity__)
+
+ #include <sys/types.h>
+ #include <netinet/in.h>
+@@ -83,96 +83,96 @@ inet_addr(const char *cp)
+ * This replaces inet_addr, the return value from which
+ * cannot distinguish between failure and a local broadcast address.
+ */
+-int
+-inet_aton(const char *cp, struct in_addr *addr)
+-{
+- u_int32_t val;
+- int base, n;
+- char c;
+- u_int parts[4];
+- u_int *pp = parts;
++// int
++// inet_aton(const char *cp, struct in_addr *addr)
++// {
++// u_int32_t val;
++// int base, n;
++// char c;
++// u_int parts[4];
++// u_int *pp = parts;
+
+- c = *cp;
+- for (;;) {
+- /*
+- * Collect number up to ``.''.
+- * Values are specified as for C:
+- * 0x=hex, 0=octal, isdigit=decimal.
+- */
+- if (!isdigit(c))
+- return (0);
+- val = 0; base = 10;
+- if (c == '0') {
+- c = *++cp;
+- if (c == 'x' || c == 'X')
+- base = 16, c = *++cp;
+- else
+- base = 8;
+- }
+- for (;;) {
+- if (isascii(c) && isdigit(c)) {
+- val = (val * base) + (c - '0');
+- c = *++cp;
+- } else if (base == 16 && isascii(c) && isxdigit(c)) {
+- val = (val << 4) |
+- (c + 10 - (islower(c) ? 'a' : 'A'));
+- c = *++cp;
+- } else
+- break;
+- }
+- if (c == '.') {
+- /*
+- * Internet format:
+- * a.b.c.d
+- * a.b.c (with c treated as 16 bits)
+- * a.b (with b treated as 24 bits)
+- */
+- if (pp >= parts + 3)
+- return (0);
+- *pp++ = val;
+- c = *++cp;
+- } else
+- break;
+- }
+- /*
+- * Check for trailing characters.
+- */
+- if (c != '\0' && (!isascii(c) || !isspace(c)))
+- return (0);
+- /*
+- * Concoct the address according to
+- * the number of parts specified.
+- */
+- n = pp - parts + 1;
+- switch (n) {
++// c = *cp;
++// for (;;) {
++// /*
++// * Collect number up to ``.''.
++// * Values are specified as for C:
++// * 0x=hex, 0=octal, isdigit=decimal.
++// */
++// if (!isdigit(c))
++// return (0);
++// val = 0; base = 10;
++// if (c == '0') {
++// c = *++cp;
++// if (c == 'x' || c == 'X')
++// base = 16, c = *++cp;
++// else
++// base = 8;
++// }
++// for (;;) {
++// if (isascii(c) && isdigit(c)) {
++// val = (val * base) + (c - '0');
++// c = *++cp;
++// } else if (base == 16 && isascii(c) && isxdigit(c)) {
++// val = (val << 4) |
++// (c + 10 - (islower(c) ? 'a' : 'A'));
++// c = *++cp;
++// } else
++// break;
++// }
++// if (c == '.') {
++// /*
++// * Internet format:
++// * a.b.c.d
++// * a.b.c (with c treated as 16 bits)
++// * a.b (with b treated as 24 bits)
++// */
++// if (pp >= parts + 3)
++// return (0);
++// *pp++ = val;
++// c = *++cp;
++// } else
++// break;
++// }
++// /*
++// * Check for trailing characters.
++// */
++// if (c != '\0' && (!isascii(c) || !isspace(c)))
++// return (0);
++// /*
++// * Concoct the address according to
++// * the number of parts specified.
++// */
++// n = pp - parts + 1;
++// switch (n) {
+
+- case 0:
+- return (0); /* initial nondigit */
++// case 0:
++// return (0); /* initial nondigit */
+
+- case 1: /* a -- 32 bits */
+- break;
++// case 1: /* a -- 32 bits */
++// break;
+
+- case 2: /* a.b -- 8.24 bits */
+- if ((val > 0xffffff) || (parts[0] > 0xff))
+- return (0);
+- val |= parts[0] << 24;
+- break;
++// case 2: /* a.b -- 8.24 bits */
++// if ((val > 0xffffff) || (parts[0] > 0xff))
++// return (0);
++// val |= parts[0] << 24;
++// break;
+
+- case 3: /* a.b.c -- 8.8.16 bits */
+- if ((val > 0xffff) || (parts[0] > 0xff) || (parts[1] > 0xff))
+- return (0);
+- val |= (parts[0] << 24) | (parts[1] << 16);
+- break;
++// case 3: /* a.b.c -- 8.8.16 bits */
++// if ((val > 0xffff) || (parts[0] > 0xff) || (parts[1] > 0xff))
++// return (0);
++// val |= (parts[0] << 24) | (parts[1] << 16);
++// break;
+
+- case 4: /* a.b.c.d -- 8.8.8.8 bits */
+- if ((val > 0xff) || (parts[0] > 0xff) || (parts[1] > 0xff) || (parts[2] > 0xff))
+- return (0);
+- val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
+- break;
+- }
+- if (addr)
+- addr->s_addr = htonl(val);
+- return (1);
+-}
++// case 4: /* a.b.c.d -- 8.8.8.8 bits */
++// if ((val > 0xff) || (parts[0] > 0xff) || (parts[1] > 0xff) || (parts[2] > 0xff))
++// return (0);
++// val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
++// break;
++// }
++// if (addr)
++// addr->s_addr = htonl(val);
++// return (1);
++// }
+
+ #endif /* !defined(HAVE_INET_ATON) */
+diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
+index 4316ab8..1c5c338 100644
+--- a/openbsd-compat/openbsd-compat.h
++++ b/openbsd-compat/openbsd-compat.h
+@@ -166,7 +166,7 @@ char *inet_ntoa(struct in_addr in);
+ const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
+ #endif
+
+-#ifndef HAVE_INET_ATON
++#if !defined(HAVE_INET_ATON) && !defined(__serenity__)
+ int inet_aton(const char *cp, struct in_addr *addr);
+ #endif
+
+--
+2.36.1
+