diff options
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-.patch | 73 |
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 - |