getaddrinfo invalid port number #74896
Copy link
Copy link
Open
Labels
3.7 (EOL)end of lifeend of lifeextension-modulesC modules in the Modules dirC modules in the Modules dirtopic-socketRelated to the socket, socketserver and selectors modulesRelated to the socket, socketserver and selectors modulestype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
| BPO | 30711 |
|---|---|
| Nosy | @smejkar |
| PRs |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee = None
closed_at = None
created_at = <Date 2017-06-20.13:26:15.605>
labels = ['extension-modules', 'type-bug', '3.7']
title = 'getaddrinfo invalid port number'
updated_at = <Date 2017-06-27.11:24:31.770>
user = 'https://github.com/smejkar'bugs.python.org fields:
activity = <Date 2017-06-27.11:24:31.770>
actor = 'smejkar'
assignee = 'none'
closed = False
closed_date = None
closer = None
components = ['Extension Modules']
creation = <Date 2017-06-20.13:26:15.605>
creator = 'smejkar'
dependencies = []
files = []
hgrepos = []
issue_num = 30711
keywords = ['patch']
message_count = 3.0
messages = ['296423', '296737', '297021']
nosy_count = 1.0
nosy_names = ['smejkar']
pr_nums = ['2436']
priority = 'normal'
resolution = None
stage = None
status = 'open'
superseder = None
type = 'behavior'
url = 'https://bugs.python.org/issue30711'
versions = ['Python 3.7']Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
3.7 (EOL)end of lifeend of lifeextension-modulesC modules in the Modules dirC modules in the Modules dirtopic-socketRelated to the socket, socketserver and selectors modulesRelated to the socket, socketserver and selectors modulestype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Activity
smejkar commentedon Jun 20, 2017
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.
smejkar commentedon Jun 23, 2017
See also bpo-30710.
smejkar commentedon Jun 27, 2017
See also bpo-30786.