[Python-bugs-list] [Bug #127718] binascii_a2b_uu '@' is 0? trailing garbage bug.

noreply@sourceforge.net noreply@sourceforge.net
Fri, 05 Jan 2001 20:27:25 -0800


Bug #127718, was updated on 2001-Jan-05 19:56
Here is a current snapshot of the bug.

Project: Python
Category: Python Library
Status: Open
Resolution: None
Bug Group: None
Priority: 5
Submitted by: donut
Assigned to : nobody
Summary: binascii_a2b_uu '@' is 0?  trailing garbage bug.

Details: I first came upon the problem that binascii.a2b_uu does not handle
correctly uuencoded files that end with `.  After investigation of the
uuencode standard and the binascii.c module, I believe I have found the
reason:

The binascii module source says that some uuencoders use '@' as zero
instead of space, but (at least in ascii):

>>> ord('@')-32
32

The only thing I can think of is that perhaps this comment was written by
someone using a different charset where ord('@') is 96 rather than 64 as in
ascii.  I believe this is confirmed by the comment and the following code:

/* Check the character for legality
** The 64 in stead of the expected 63 is because
** there are a few uuencodes out there that use
** '@' as zero instead of space.
*/
if ( this_ch < ' ' || this_ch > (' ' + 64)) {

this comment certainly seems to indicate that the author is expecting '
'+64 to be '@'.  But in ascii this is actually '`'.  While this isn't a
problem in this portion of the code since it is calculated numerically,
later on we have:

/* Extra '@' may be written as padding in some cases */
if ( this_ch != ' ' && this_ch != '@' &&
this_ch != '\n' && this_ch != '\r' ) {
PyErr_SetString(Error, "Trailing garbage");


In this case, I believe the '@' should really be '`', or preferably ' '+64,
to avoid any more charset confusion.


Of course, I could have missed something and '@', really is correct..  in
that case '`' should be added since I see many uuencoders using that
instead of space.. but I really believe that this is what the code was
originally trying to do anyway. (especially since it does do this in the
illegal char detection code.)


Follow-Ups:

Date: 2001-Jan-05 20:27
By: donut

Comment:
Just another note:  If this is fixed, then the workaround in uu.py could
possibly be removed..  Assuming it doesn't workaround any other problems
too.

-------------------------------------------------------

For detailed info, follow this link:
http://sourceforge.net/bugs/?func=detailbug&bug_id=127718&group_id=5470