mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
gh-96035: Make urllib.parse.urlparse reject non-numeric ports (#98273)
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
parent
4ec9ed8fde
commit
6f15ca8c7a
3 changed files with 18 additions and 12 deletions
|
@ -167,12 +167,11 @@ class _NetlocResultMixinBase(object):
|
|||
def port(self):
|
||||
port = self._hostinfo[1]
|
||||
if port is not None:
|
||||
try:
|
||||
port = int(port, 10)
|
||||
except ValueError:
|
||||
message = f'Port could not be cast to integer value as {port!r}'
|
||||
raise ValueError(message) from None
|
||||
if not ( 0 <= port <= 65535):
|
||||
if port.isdigit() and port.isascii():
|
||||
port = int(port)
|
||||
else:
|
||||
raise ValueError(f"Port could not be cast to integer value as {port!r}")
|
||||
if not (0 <= port <= 65535):
|
||||
raise ValueError("Port out of range 0-65535")
|
||||
return port
|
||||
|
||||
|
@ -1132,15 +1131,15 @@ def splitnport(host, defport=-1):
|
|||
def _splitnport(host, defport=-1):
|
||||
"""Split host and port, returning numeric port.
|
||||
Return given default port if no ':' found; defaults to -1.
|
||||
Return numerical port if a valid number are found after ':'.
|
||||
Return numerical port if a valid number is found after ':'.
|
||||
Return None if ':' but not a valid number."""
|
||||
host, delim, port = host.rpartition(':')
|
||||
if not delim:
|
||||
host = port
|
||||
elif port:
|
||||
try:
|
||||
if port.isdigit() and port.isascii():
|
||||
nport = int(port)
|
||||
except ValueError:
|
||||
else:
|
||||
nport = None
|
||||
return host, nport
|
||||
return host, defport
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue