mirror of
https://github.com/python/cpython.git
synced 2025-07-24 19:54:21 +00:00
Random modifications that slightly improve the chances of this not blowing up.
Walter will fix it for real.
This commit is contained in:
parent
ccf4f0f68d
commit
0e02abb791
1 changed files with 10 additions and 11 deletions
|
@ -87,7 +87,7 @@ def ToASCII(label):
|
|||
raise UnicodeError("label empty or too long")
|
||||
|
||||
# Step 5: Check ACE prefix
|
||||
if label.startswith(uace_prefix):
|
||||
if label.startswith(ace_prefix):
|
||||
raise UnicodeError("Label starts with ACE prefix")
|
||||
|
||||
# Step 6: Encode with PUNYCODE
|
||||
|
@ -103,7 +103,7 @@ def ToASCII(label):
|
|||
|
||||
def ToUnicode(label):
|
||||
# Step 1: Check for ASCII
|
||||
if isinstance(label, str):
|
||||
if isinstance(label, bytes):
|
||||
pure_ascii = True
|
||||
else:
|
||||
try:
|
||||
|
@ -150,19 +150,19 @@ class Codec(codecs.Codec):
|
|||
raise UnicodeError("unsupported error handling "+errors)
|
||||
|
||||
if not input:
|
||||
return "", 0
|
||||
return b"", 0
|
||||
|
||||
result = []
|
||||
labels = dots.split(input)
|
||||
if labels and len(labels[-1])==0:
|
||||
trailing_dot = '.'
|
||||
trailing_dot = b'.'
|
||||
del labels[-1]
|
||||
else:
|
||||
trailing_dot = ''
|
||||
trailing_dot = b''
|
||||
for label in labels:
|
||||
result.append(ToASCII(label))
|
||||
# Join with U+002E
|
||||
return ".".join(result)+trailing_dot, len(input)
|
||||
return b".".join(result)+trailing_dot, len(input)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
|
||||
|
@ -173,13 +173,12 @@ class Codec(codecs.Codec):
|
|||
return "", 0
|
||||
|
||||
# IDNA allows decoding to operate on Unicode strings, too.
|
||||
if isinstance(input, str):
|
||||
if isinstance(input, bytes):
|
||||
labels = dots.split(input)
|
||||
else:
|
||||
# Must be ASCII string
|
||||
input = str(input)
|
||||
str(input, "ascii")
|
||||
labels = input.split(".")
|
||||
# Force to bytes
|
||||
input = bytes(input)
|
||||
labels = input.split(b".")
|
||||
|
||||
if labels and len(labels[-1]) == 0:
|
||||
trailing_dot = '.'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue