From 6e57c2a6532d6f1158586232452a3b440e975b98 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Wed, 8 Jun 2005 22:51:38 +0000 Subject: [Patch #1171487, bug #1170331] Fix error in base64.b32decode when encoding a single null byte; test a null byte in all encodings to be sure it works --- Lib/base64.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'Lib/base64.py') diff --git a/Lib/base64.py b/Lib/base64.py index f90b91d994..8914acce92 100755 --- a/Lib/base64.py +++ b/Lib/base64.py @@ -221,12 +221,14 @@ def b32decode(s, casefold=False, map01=None): acc += _b32rev[c] << shift shift -= 5 if shift < 0: - parts.append(binascii.unhexlify(hex(acc)[2:-1])) + parts.append(binascii.unhexlify('%010x' % acc)) acc = 0 shift = 35 # Process the last, partial quanta - last = binascii.unhexlify(hex(acc)[2:-1]) - if padchars == 1: + last = binascii.unhexlify('%010x' % acc) + if padchars == 0: + last = '' # No characters + elif padchars == 1: last = last[:-1] elif padchars == 3: last = last[:-2] @@ -234,7 +236,7 @@ def b32decode(s, casefold=False, map01=None): last = last[:-3] elif padchars == 6: last = last[:-4] - elif padchars <> 0: + else: raise TypeError('Incorrect padding') parts.append(last) return EMPTYSTRING.join(parts) -- cgit v1.2.1