diff options
| author | dgp <dgp@users.sourceforge.net> | 2018-11-16 20:37:09 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2018-11-16 20:37:09 (GMT) |
| commit | 1fae54c8c004d072d62e3d867ef4e66b238d0bcd (patch) | |
| tree | 54c9a396d306c15ea15d97c4b9cfc5066bd15c27 /generic/tclBinary.c | |
| parent | 511765faae09dd5a56da42a2df297514cff7df3e (diff) | |
| parent | 35299947e3250ea5b40f66bf8ee1c78844a9b553 (diff) | |
| download | tcl-1fae54c8c004d072d62e3d867ef4e66b238d0bcd.zip tcl-1fae54c8c004d072d62e3d867ef4e66b238d0bcd.tar.gz tcl-1fae54c8c004d072d62e3d867ef4e66b238d0bcd.tar.bz2 | |
merge 8.6
Diffstat (limited to 'generic/tclBinary.c')
| -rw-r--r-- | generic/tclBinary.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/generic/tclBinary.c b/generic/tclBinary.c index 96adff0..4e17979 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -3058,6 +3058,11 @@ BinaryDecode64( } else if (i > 1) { c = '='; } else { + if (strict && i <= 1) { + /* single resp. unfulfilled char (each 4th next single char) + * is rather bad64 error case in strict mode */ + goto bad64; + } cut += 3; break; } @@ -3088,9 +3093,11 @@ BinaryDecode64( value = (value << 6) | 0x3e; } else if (c == '/') { value = (value << 6) | 0x3f; - } else if (c == '=') { + } else if (c == '=' && ( + !strict || i > 1) /* "=" and "a=" is rather bad64 error case in strict mode */ + ) { value <<= 6; - cut++; + if (i) cut++; } else if (strict || !TclIsSpaceProc(c)) { goto bad64; } else { |
