summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorThomas Wouters <thomas@python.org>2003-03-17 11:24:29 (GMT)
committerThomas Wouters <thomas@python.org>2003-03-17 11:24:29 (GMT)
commit9e1c192525f0382ec1e8710c2f8e1dcef389ff77 (patch)
tree9587e0b075fa6b6589e5d4734005a6a9b4a8ac30 /Modules
parent450bd873ac9a7d44d24498b67cd111ce77334e85 (diff)
downloadcpython-9e1c192525f0382ec1e8710c2f8e1dcef389ff77.zip
cpython-9e1c192525f0382ec1e8710c2f8e1dcef389ff77.tar.gz
cpython-9e1c192525f0382ec1e8710c2f8e1dcef389ff77.tar.bz2
binascii_a2b_base64: Properly return an empty string if the input was all
invalid, rather than returning a string of random garbage of the estimated result length. Closes SF patch #703471 by Hye-Shik Chang. Will backport to 2.2-maint (consider it done.)
Diffstat (limited to 'Modules')
-rw-r--r--Modules/binascii.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Modules/binascii.c b/Modules/binascii.c
index c56d528..05964c9 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -408,9 +408,16 @@ binascii_a2b_base64(PyObject *self, PyObject *args)
return NULL;
}
- /* and set string size correctly */
+ /* And set string size correctly. If the result string is empty
+ ** (because the input was all invalid) return the shared empty
+ ** string instead; _PyString_Resize() won't do this for us.
+ */
if (bin_len > 0)
_PyString_Resize(&rv, bin_len);
+ else {
+ Py_DECREF(rv);
+ rv = PyString_FromString("");
+ }
return rv;
}