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.)
diff --git a/Lib/test/test_binascii.py b/Lib/test/test_binascii.py
index f1f8b33..2764c3c 100755
--- a/Lib/test/test_binascii.py
+++ b/Lib/test/test_binascii.py
@@ -69,6 +69,10 @@
     res = res + b
 verify(res == testdata)
 
+# Test base64 with just invalid characters, which should return
+# empty strings. TBD: shouldn't it raise an exception instead ?
+verify(binascii.a2b_base64(fillers) == '')
+
 # Test uu
 print "uu test"
 MAX_UU = 45
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 @@
 		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;
 }