summaryrefslogtreecommitdiff
path: root/Modules/binascii.c
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1996-01-22 10:47:15 +0000
committerJack Jansen <jack.jansen@cwi.nl>1996-01-22 10:47:15 +0000
commitffc21dacf33a882bc64f502f78ffc1151603c2ab (patch)
tree5aed6613723c32c440c7aeb12d19765e4d0ce46a /Modules/binascii.c
parent28c08a766cbc1ed5297b95ec36773f5eb329e918 (diff)
downloadcpython-ffc21dacf33a882bc64f502f78ffc1151603c2ab.tar.gz
Fixed off-by-one error in rle-decode, and allow whitespace in base64
ascii input (thanks to Donald Beaudry for pointing these out)
Diffstat (limited to 'Modules/binascii.c')
-rw-r--r--Modules/binascii.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/Modules/binascii.c b/Modules/binascii.c
index 8d4784033a..95d7bb0dac 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -343,11 +343,11 @@ binascii_a2b_base64(self, args)
bin_data = (unsigned char *)PyString_AsString(rv);
bin_len = 0;
for( ; ascii_len > 0 ; ascii_len--, ascii_data++ ) {
- /*
- ** XXXX I don't do any checks on the chars, ignoring
- ** any illegal chars. Hope this is correct...
- */
+ /* Skip some punctuation */
this_ch = (*ascii_data & 0x7f);
+ if ( this_ch == '\r' || this_ch == '\n' || this_ch == ' ' )
+ continue;
+
if ( this_ch == BASE64_PAD )
npad++;
this_ch = table_a2b_base64[(*ascii_data) & 0x7f];
@@ -626,7 +626,7 @@ binascii_rledecode_hqx(self, args)
_PyString_Resize(&rv, 2*out_len); \
if ( rv == NULL ) return NULL; \
out_data = (unsigned char *)PyString_AsString(rv) + out_len; \
- out_len_left = out_len; \
+ out_len_left = out_len-1; \
out_len = out_len * 2; \
} \
*out_data++ = b; \