Bug 16498

Summary: wrong getaddrname functions behavior
Product: Sisyphus Reporter: inger <inger>
Component: glibc-coreAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: glebfm, ldv, php-coder, placeholder
Version: unstable   
Hardware: all   
OS: Linux   

Description inger@altlinux.org 2008-07-31 18:43:37 MSD
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 программа вынуждена будет самостоятельно заниматься конверсией из числа в строку и проверкой диапазона.

Тем более что ведь на левые сервисы по имени будет возвращена ошибка, спрашивается, почему нет сообщения об ошибке для левого порта.
Comment 1 Dmitry V. Levin 2018-12-02 17:58:58 MSK
Is it a getaddrinfo()'s to detect illegal invalid ports?