classification
Title: getaddrinfo invalid port number
Type: behavior Stage:
Components: Extension Modules Versions: Python 3.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: smejkar
Priority: normal Keywords: patch

Created on 2017-06-20 13:26 by smejkar, last changed 2017-06-27 11:24 by smejkar.

Pull Requests
URL Status Linked Edit
PR 2436 open smejkar, 2017-06-27 11:24
Messages (3)
msg296423 - (view) Author: Radek Smejkal (smejkar) * Date: 2017-06-20 13:26
Some getaddrinfo implementations do not detect invalid numeric services and blindly pass the port number to htons(). For example, service "960179" is returned as port 42675.

glibc
https://sourceware.org/bugzilla/show_bug.cgi?id=16208
https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/posix/getaddrinfo.c;h=a8bdd9a1829409bd797637b2c4fca4d67a11012d;hb=HEAD#l435
https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/posix/getaddrinfo.c;h=a8bdd9a1829409bd797637b2c4fca4d67a11012d;hb=HEAD#l2313

AIX 7.1 libc
Broken

Modules/getaddrinfo
https://github.com/python/cpython/blob/master/Modules/getaddrinfo.c#L342


On the other hand, for example, OpenBSD and musl check the port range
https://github.com/openbsd/src/blob/master/lib/libc/asr/getaddrinfo_async.c#L477
https://git.musl-libc.org/cgit/musl/tree/src/network/lookup_serv.c#n53


Modules/getaddrinfo should be fixed.

The configure script should detect whether the system getaddrinfo is broken. If so, a wrapper that checks numeric services, and returns EAI_SERVICE or calls the system getaddrinfo should be used in place of the system getaddrinfo.
msg296737 - (view) Author: Radek Smejkal (smejkar) * Date: 2017-06-23 21:25
See also issue30710.
msg297021 - (view) Author: Radek Smejkal (smejkar) * Date: 2017-06-27 10:41
See also issue30786.
History
Date User Action Args
2017-06-27 11:24:31smejkarsetpull_requests: + pull_request2484
2017-06-27 10:41:36smejkarsetmessages: + msg297021
2017-06-23 21:25:17smejkarsetmessages: + msg296737
2017-06-23 20:48:55smejkarsetfiles: - getaddrinfo_invalid_port.patch
2017-06-21 14:35:09smejkarsetfiles: + getaddrinfo_invalid_port.patch
keywords: + patch
components: + Extension Modules, - Library (Lib)
2017-06-20 13:26:15smejkarcreate