X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fnetwork%2Fgetservbyport_r.c;h=b7f21c6b398a52c4eeb61ea9a94f12a1e88e7b71;hb=2e5fff43dd7fc808197744c67cca7908ac19bb4f;hp=a0a7caecf77e8dd89bbbc3aa3ee3d3b4112ac08a;hpb=75fff40b9b536e0e6847d17ecc076894ca7b7068;p=musl diff --git a/src/network/getservbyport_r.c b/src/network/getservbyport_r.c index a0a7caec..b7f21c6b 100644 --- a/src/network/getservbyport_r.c +++ b/src/network/getservbyport_r.c @@ -5,6 +5,7 @@ #include #include #include +#include int getservbyport_r(int port, const char *prots, struct servent *se, char *buf, size_t buflen, struct servent **res) @@ -20,6 +21,7 @@ int getservbyport_r(int port, const char *prots, if (r) r = getservbyport_r(port, "udp", se, buf, buflen, res); return r; } + *res = 0; /* Align buffer */ i = (uintptr_t)buf & sizeof(char *)-1; @@ -50,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; }