summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_base64.py7
-rw-r--r--Modules/binascii.c7
2 files changed, 3 insertions, 11 deletions
diff --git a/Lib/test/test_base64.py b/Lib/test/test_base64.py
index 223c388..42e3c81 100644
--- a/Lib/test/test_base64.py
+++ b/Lib/test/test_base64.py
@@ -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)
diff --git a/Modules/binascii.c b/Modules/binascii.c
index 0fe85fc..c56d528 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -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;
}