From: Anthony Baxter Date: Thu, 1 Nov 2001 11:30:06 +0000 (+0000) Subject: backport fixes from 2.32 and 2.29: X-Git-Tag: v2.1.2c1~98 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cece2b7da625d3304b653f809e239917339b1659;p=thirdparty%2FPython%2Fcpython.git backport fixes from 2.32 and 2.29: Change the limit on the input size for b2a_base64 to what will fit in memory, rather than the standard's 57. This fixes SF bug #473009. This closes bug #430849 (internal error produced by binascii.a2b_base64) --- diff --git a/Modules/binascii.c b/Modules/binascii.c index 85edd044f6e8..efe6608c365e 100644 --- a/Modules/binascii.c +++ b/Modules/binascii.c @@ -126,7 +126,9 @@ static char table_a2b_base64[] = { }; #define BASE64_PAD '=' -#define BASE64_MAXBIN 57 /* Max binary chunk size (76 char line) */ + +/* Max binary chunk size; limited only by available memory */ +#define BASE64_MAXBIN (INT_MAX/2 - sizeof(PyStringObject)) static unsigned char table_b2a_base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; @@ -335,6 +337,10 @@ binascii_a2b_base64(PyObject *self, PyObject *args) if ( !PyArg_ParseTuple(args, "t#:a2b_base64", &ascii_data, &ascii_len) ) return NULL; + if ( ascii_len == 0) { + PyErr_SetString(Error, "Cannot decode empty input"); + return NULL; + } bin_len = ((ascii_len+3)/4)*3; /* Upper bound, corrected later */ /* Allocate the buffer */