summaryrefslogtreecommitdiffstats
path: root/generic/tclBinary.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2018-11-16 20:37:09 (GMT)
committerdgp <dgp@users.sourceforge.net>2018-11-16 20:37:09 (GMT)
commit1fae54c8c004d072d62e3d867ef4e66b238d0bcd (patch)
tree54c9a396d306c15ea15d97c4b9cfc5066bd15c27 /generic/tclBinary.c
parent511765faae09dd5a56da42a2df297514cff7df3e (diff)
parent35299947e3250ea5b40f66bf8ee1c78844a9b553 (diff)
downloadtcl-1fae54c8c004d072d62e3d867ef4e66b238d0bcd.zip
tcl-1fae54c8c004d072d62e3d867ef4e66b238d0bcd.tar.gz
tcl-1fae54c8c004d072d62e3d867ef4e66b238d0bcd.tar.bz2
merge 8.6
Diffstat (limited to 'generic/tclBinary.c')
-rw-r--r--generic/tclBinary.c11
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 {