Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Lib/encodings/idna.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def ToASCII(label):
raise UnicodeError("label empty or too long")

# Step 5: Check ACE prefix
if label.startswith(sace_prefix):
if label[:4].lower() == sace_prefix:
raise UnicodeError("Label starts with ACE prefix")

# Step 6: Encode with PUNYCODE
Expand Down Expand Up @@ -121,7 +121,7 @@ def ToUnicode(label):
except UnicodeError:
raise UnicodeError("Invalid character in IDN label")
# Step 3: Check for ACE prefix
if not label.startswith(ace_prefix):
if not label[:4].lower() == ace_prefix:
return str(label, "ascii")

# Step 4: Remove ACE prefix
Expand Down Expand Up @@ -194,7 +194,7 @@ def decode(self, input, errors='strict'):
# XXX obviously wrong, see #3232
input = bytes(input)

if ace_prefix not in input:
if ace_prefix not in input.lower():
# Fast path
try:
return input.decode('ascii'), len(input)
Expand Down
7 changes: 7 additions & 0 deletions Lib/test/test_codecs.py
Original file line number Diff line number Diff line change
Expand Up @@ -1524,6 +1524,13 @@ def test_builtin_decode(self):
self.assertEqual(str(b"python.org.", "idna"), "python.org.")
self.assertEqual(str(b"xn--pythn-mua.org", "idna"), "pyth\xf6n.org")
self.assertEqual(str(b"xn--pythn-mua.org.", "idna"), "pyth\xf6n.org.")
self.assertEqual(str(b"XN--pythn-mua.org.", "idna"), "pyth\xf6n.org.")
self.assertEqual(str(b"xN--pythn-mua.org.", "idna"), "pyth\xf6n.org.")
self.assertEqual(str(b"Xn--pythn-mua.org.", "idna"), "pyth\xf6n.org.")
self.assertEqual(str(b"bugs.xn--pythn-mua.org.", "idna"),
"bugs.pyth\xf6n.org.")
self.assertEqual(str(b"bugs.XN--pythn-mua.org.", "idna"),
"bugs.pyth\xf6n.org.")

def test_builtin_encode(self):
self.assertEqual("python.org".encode("idna"), b"python.org")
Expand Down