fix regression in getspnam[_r] error code for insufficient buffer size
[musl] / src / network / getnameinfo.c
index 2ba66e3..5e6fae3 100644 (file)
@@ -96,7 +96,7 @@ static void reverse_services(char *buf, int port, int dgram)
                if ((p=strchr(line, '#'))) *p++='\n', *p=0;
 
                for (p=line; *p && !isspace(*p); p++);
-               if (!p) continue;
+               if (!*p) continue;
                *p++ = 0;
                svport = strtoul(p, &z, 10);
 
@@ -135,13 +135,13 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl,
        switch (af) {
        case AF_INET:
                a = (void *)&((struct sockaddr_in *)sa)->sin_addr;
-               if (sl != sizeof(struct sockaddr_in)) return EAI_FAMILY;
+               if (sl < sizeof(struct sockaddr_in)) return EAI_FAMILY;
                mkptr4(ptr, a);
                scopeid = 0;
                break;
        case AF_INET6:
                a = (void *)&((struct sockaddr_in6 *)sa)->sin6_addr;
-               if (sl != sizeof(struct sockaddr_in6)) return EAI_FAMILY;
+               if (sl < sizeof(struct sockaddr_in6)) return EAI_FAMILY;
                if (memcmp(a, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12))
                        mkptr6(ptr, a);
                else