Przeglądaj źródła

port numbers should always be interpreted as decimal

per POSIX and RFC 3493:

If the specified address family is AF_INET, AF_INET6, or AF_UNSPEC,
the service can be specified as a string specifying a decimal port
number.

021 is a valid decimal number, therefore, interpreting it as octal
seems to be non-conformant.
Rich Felker 13 lat temu
rodzic
commit
f4e8e64b82
1 zmienionych plików z 1 dodań i 1 usunięć
  1. 1 1
      src/network/getaddrinfo.c

+ 1 - 1
src/network/getaddrinfo.c

@@ -76,7 +76,7 @@ int getaddrinfo(const char *host, const char *serv, const struct addrinfo *hint,
 
 	if (serv) {
 		if (!*serv) return EAI_SERVICE;
-		port = strtoul(serv, &z, 0);
+		port = strtoul(serv, &z, 10);
 		if (!*z && port > 65535) return EAI_SERVICE;
 		if (!port) {
 			if (flags & AI_NUMERICSERV) return EAI_SERVICE;