]> granicus.if.org Git - python/commitdiff
Fixed off-by-one error in rle-decode, and allow whitespace in base64
authorJack Jansen <jack.jansen@cwi.nl>
Mon, 22 Jan 1996 10:47:15 +0000 (10:47 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Mon, 22 Jan 1996 10:47:15 +0000 (10:47 +0000)
ascii input (thanks to Donald Beaudry for pointing these out)

Modules/binascii.c

index 8d4784033afe00c4b4bba2f53db9718bb29952cb..95d7bb0dac1bafa8b5655095f8482cf933328db6 100644 (file)
@@ -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; \