From 0e02abb791386dc4baa92ad0e3ee9eb59f039629 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 9 May 2007 23:40:37 +0000 Subject: Random modifications that slightly improve the chances of this not blowing up. Walter will fix it for real. --- Lib/encodings/idna.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'Lib/encodings') diff --git a/Lib/encodings/idna.py b/Lib/encodings/idna.py index b226d22fda5..5c3d05663e8 100644 --- a/Lib/encodings/idna.py +++ b/Lib/encodings/idna.py @@ -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 @@ def encode(self,input,errors='strict'): 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 @@ def decode(self,input,errors='strict'): 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 = '.' -- cgit v1.2.3-65-gdbad