fix getservby*_r result pointer value on error
authorDaniel Sabogal <dsabogalcc@gmail.com>
Sat, 24 Sep 2016 01:10:07 +0000 (21:10 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 24 Sep 2016 05:10:23 +0000 (01:10 -0400)
this is a clone of the fix to the gethostby*_r functions in
commit fe82bb9b921be34370e6b71a1c6f062c20999ae0. the man pages
document that the getservby*_r functions set this pointer to
NULL if there was an error or if no record was found.

src/network/getservbyname_r.c
src/network/getservbyport_r.c

index 056c2f33bbd32eec1a1649e7cf71e51fc113105c..ad3d6164c2e1c63089376f8fa53340ca553ef57e 100644 (file)
@@ -15,6 +15,8 @@ int getservbyname_r(const char *name, const char *prots,
        struct service servs[MAXSERVS];
        int cnt, proto, align;
 
+       *res = 0;
+
        /* Align buffer */
        align = -(uintptr_t)buf & ALIGN-1;
        if (buflen < 2*sizeof(char *)+align)
index a0a7caecf77e8dd89bbbc3aa3ee3d3b4112ac08a..0ae0e41587fe03f36708583edd6596195d0ce25d 100644 (file)
@@ -20,6 +20,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;