summaryrefslogtreecommitdiffstats
path: root/generic/tclEncoding.c
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2024-08-09 02:53:11 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2024-08-09 02:53:11 (GMT)
commit729a9f2717500b1b42cb0b2066253858ae8fa1cb (patch)
tree9683a398991b1da76a001aac79dcf295dc56c195 /generic/tclEncoding.c
parent4cb20e620ca55e8164d2f0ba15e753b874a85bae (diff)
downloadtcl-729a9f2717500b1b42cb0b2066253858ae8fa1cb.zip
tcl-729a9f2717500b1b42cb0b2066253858ae8fa1cb.tar.gz
tcl-729a9f2717500b1b42cb0b2066253858ae8fa1cb.tar.bz2
Proposed fix for crash [201c7a3aa6] - crash on non-BMP
Diffstat (limited to 'generic/tclEncoding.c')
-rw-r--r--generic/tclEncoding.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index 624705d..ee80ba4 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -3983,6 +3983,15 @@ EscapeFromUtfProc(
break;
}
len = TclUtfToUniChar(src, &ch);
+ if (ch > 0xFFFF) {
+ /* Bug 201c7a3aa6 crash - tables are 256x256 (64K) */
+ if (PROFILE_STRICT(flags)) {
+ result = TCL_CONVERT_SYNTAX;
+ break;
+ }
+ /* Will be encoded as encoding specific replacement below */
+ ch = UNICODE_REPLACE_CHAR;
+ }
word = tableFromUnicode[(ch >> 8)][ch & 0xFF];
if ((word == 0) && (ch != 0)) {