int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); Параметр service -- или имя сервиса или номер сервиса. Проблема в том что при получении строки с номером порта выше 65536 функция не возвращает код ошибки а получает неопределённое поведение. В debian это известно аж с 2003: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=192876 В netbsd подобной проблемы нет: http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-4-0/src/dist/bind/lib/lwres/getaddrinfo.c Мне кажется это ошибка иначе вызывающая getaddrinfo программа вынуждена будет самостоятельно заниматься конверсией из числа в строку и проверкой диапазона. Тем более что ведь на левые сервисы по имени будет возвращена ошибка, спрашивается, почему нет сообщения об ошибке для левого порта.
Is it a getaddrinfo()'s to detect illegal invalid ports?