base64.decodestring('') should return '' instead of raising an
exception. The bug fix for SF #430849 wasn't quite right. This closes SF bug #595671. I'll backport this to Python 2.2.
This commit is contained in:
parent
7ca993ed37
commit
0a51b58e6b
|
@ -44,12 +44,7 @@ class Base64TestCase(unittest.TestCase):
|
|||
"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==\n") ==
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#0^&*();:<>,. []{}",
|
||||
reason = "long decodestring failed")
|
||||
try:
|
||||
base64.decodestring("")
|
||||
except binascii_error:
|
||||
pass
|
||||
else:
|
||||
self.fail("expected a binascii.Error on null decode request")
|
||||
test_support.verify(base64.decodestring('') == '')
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(Base64TestCase)
|
||||
|
|
|
@ -346,10 +346,6 @@ 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 */
|
||||
|
@ -413,7 +409,8 @@ binascii_a2b_base64(PyObject *self, PyObject *args)
|
|||
}
|
||||
|
||||
/* and set string size correctly */
|
||||
_PyString_Resize(&rv, bin_len);
|
||||
if (bin_len > 0)
|
||||
_PyString_Resize(&rv, bin_len);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue