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.
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;