This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Patch for [ 1170331 ] Error in base64.b32decode
Type: Stage:
Components: Library (Lib) Versions: Python 2.4
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: akuchling Nosy List: akuchling, logistix
Priority: high Keywords: patch

Created on 2005-03-27 19:46 by logistix, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
base32decode_fix.diff logistix, 2005-03-27 21:43
Messages (3)
msg48062 - (view) Author: Grant Olson (logistix) Date: 2005-03-27 19:46
base64.b32decode didn't decode some things properly. 
Seems to have only impacted characters with a value <
32.  Attached is a fix and a new test.
msg48063 - (view) Author: Grant Olson (logistix) Date: 2005-03-27 21:43
Logged In: YES 
user_id=699438

Updated patch to reflect another fix.

I originally thought the bug was related to cleanup of a
partial quanta.  It will trigger on any quanta where the
initial hex value is < 0x10.  When this happens part of the
hex code disappears in the initial conversion and is
mistakenly swallowed.  The hex function that was originally
used doesn't zero-pad, but the way the bit shifting works,
it doesn't need to when encoding normal alpha-numeric
characters, so it seemed to work correctly.

This will only cause problems if you are using a character
value of < 0x10 in the 0th, 4th, 8th, 12th, etc positions in
the encoded string.  Otherwise it'll work properly.  Using
"%010x" ensures that you'll get the appropriate zero-padding
if necessary.

Example of more broken code not covered in the original bug:

>>> base64.b32decode(base64.b32encode('\x00aaa'))
'aaa'

Updated patch fixes this case as well.
msg48064 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2005-06-08 22:53
Logged In: YES 
user_id=11375

Applied; thanks!  I also added a test case that would have
caught the bug.
History
Date User Action Args
2022-04-11 14:56:10adminsetgithub: 41765
2005-03-27 19:46:17logistixcreate