[Python-bugs-list] [ python-Bugs-473009 ] binascii_b2a_base64() improper str limit

noreply@sourceforge.net noreply@sourceforge.net
Fri, 19 Oct 2001 21:42:30 -0700


Bugs item #473009, was opened at 2001-10-19 21:42
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=473009&group_id=5470

Category: Python Library
Group: Python 2.1.1
Status: Open
Resolution: None
Priority: 5
Submitted By: Dave Cinege (dcinege)
Assigned to: Nobody/Anonymous (nobody)
Summary: binascii_b2a_base64() improper str limit

Initial Comment:
Modules/binascii.c
binascii_b2a_base64() contains the following 
restrictive code:
	if ( bin_len > BASE64_MAXBIN ) {
		PyErr_SetString(Error, "Too much data 
for base64 line");
		return NULL;
	}

This is an error. The base64 method of encoding data 
has no length limitation. The MIME message RCF has 
such a limitation of base64 encoded data. The 
function should not assume it's only input must be 
MIME compatible. The base64 python module itself
is designed for MIME I/O only, and properly limits 
itself. The binascii function should be left raw.

binascii_a2b_base64() properly accepts input of any 
size.

How I came across this bug: I use base64 to ascii
armor binary data in log entries in a distributed 
network monitoring system. For the sake of ease of 
parsing (human and machine) all log entries are 
delimited by a single line. I commonly have unbroken 
base64 encoded fields of 64KB in size or greater.

Unfortunatly I am unable to encode this data like 
this:
result64 = binascii.b2a_base64(s)
I must do this:
result64 = re.sub('[ |\n]','',base64.encodestring(s))
Which is *much* slower.  : <

I feel this is an outright bug and should be 
corrected. If their is some argument for backward 
compatibly an optional function argument should be 
present to allow bypassing this limitation.




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

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=473009&group_id=5470