aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0067-don-t-treat-numeric-port-strings-as-servent-records-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/musl/0067-don-t-treat-numeric-port-strings-as-servent-records-.patch')
-rw-r--r--main/musl/0067-don-t-treat-numeric-port-strings-as-servent-records-.patch73
1 files changed, 0 insertions, 73 deletions
diff --git a/main/musl/0067-don-t-treat-numeric-port-strings-as-servent-records-.patch b/main/musl/0067-don-t-treat-numeric-port-strings-as-servent-records-.patch
deleted file mode 100644
index 8e5fd0068e..0000000000
--- a/main/musl/0067-don-t-treat-numeric-port-strings-as-servent-records-.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 565dbee24d4bf55728be1c274fca1e7f3196fd73 Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Wed, 6 Sep 2017 21:42:15 -0400
-Subject: [PATCH 25/30] don't treat numeric port strings as servent records in
- getservby*()
-
-some applications use getservbyport to find port numbers that are not
-assigned to a service; if getservbyport always succeeds with a numeric
-string as the result, they fail to find any available ports.
-
-POSIX doesn't seem to mandate the behavior one way or another. it
-specifies an abstract service database, which an implementation could
-define to include numeric port strings, but it makes more sense to
-align behavior with traditional implementations.
-
-based on patch by A. Wilcox. the original patch only changed
-getservbyport[_r]. to maintain a consistent view of the "service
-database", I have also modified getservbyname[_r] to exclude numeric
-port strings.
----
- src/network/getservbyname_r.c | 6 ++++++
- src/network/getservbyport_r.c | 4 ++++
- 2 files changed, 10 insertions(+)
-
-diff --git a/src/network/getservbyname_r.c b/src/network/getservbyname_r.c
-index ad3d6164..cad6317a 100644
---- a/src/network/getservbyname_r.c
-+++ b/src/network/getservbyname_r.c
-@@ -5,6 +5,7 @@
- #include <inttypes.h>
- #include <errno.h>
- #include <string.h>
-+#include <stdlib.h>
- #include "lookup.h"
-
- #define ALIGN (sizeof(struct { char a; char *b; }) - sizeof(char *))
-@@ -17,6 +18,11 @@ int getservbyname_r(const char *name, const char *prots,
-
- *res = 0;
-
-+ /* Don't treat numeric port number strings as service records. */
-+ char *end = "";
-+ strtoul(name, &end, 10);
-+ if (!*end) return ENOENT;
-+
- /* Align buffer */
- align = -(uintptr_t)buf & ALIGN-1;
- if (buflen < 2*sizeof(char *)+align)
-diff --git a/src/network/getservbyport_r.c b/src/network/getservbyport_r.c
-index 0ae0e415..b7f21c6b 100644
---- a/src/network/getservbyport_r.c
-+++ b/src/network/getservbyport_r.c
-@@ -5,6 +5,7 @@
- #include <inttypes.h>
- #include <errno.h>
- #include <string.h>
-+#include <stdlib.h>
-
- int getservbyport_r(int port, const char *prots,
- struct servent *se, char *buf, size_t buflen, struct servent **res)
-@@ -51,6 +52,9 @@ int getservbyport_r(int port, const char *prots,
- break;
- }
-
-+ /* A numeric port string is not a service record. */
-+ if (strtol(buf, 0, 10)==ntohs(port)) return ENOENT;
-+
- *res = se;
- return 0;
- }
---
-2.13.3
-