summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-05-13 16:51:16 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-05-13 16:51:16 (GMT)
commit20098349b6daa26620340a85771135d1d752fc47 (patch)
tree9e6e5183ef0bb2e0051cf2621ecd565fee7b9667 /win
parent137310bc48c268ffa2c880ec847258e394e1475c (diff)
parent9cc2036c6436600b0dea8f4c153fa7a71fb1feeb (diff)
downloadtcl-20098349b6daa26620340a85771135d1d752fc47.zip
tcl-20098349b6daa26620340a85771135d1d752fc47.tar.gz
tcl-20098349b6daa26620340a85771135d1d752fc47.tar.bz2
Fix [ed29806baf]: Tcl_UtfToUniChar reads more than TCL_UTF_MAX bytes
Diffstat (limited to 'win')
-rw-r--r--win/tclWinSerial.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/win/tclWinSerial.c b/win/tclWinSerial.c
index be7ec2c..aeebb56 100644
--- a/win/tclWinSerial.c
+++ b/win/tclWinSerial.c
@@ -1752,16 +1752,16 @@ SerialSetOptionProc(
dcb.XonChar = argv[0][0];
dcb.XoffChar = argv[1][0];
if (argv[0][0] & 0x80 || argv[1][0] & 0x80) {
- Tcl_UniChar character;
+ int character;
int charLen;
- charLen = Tcl_UtfToUniChar(argv[0], &character);
- if (argv[0][charLen]) {
+ charLen = TclUtfToUCS4(argv[0], &character);
+ if ((character & ~0xFF) || argv[0][charLen]) {
goto badXchar;
}
dcb.XonChar = (char) character;
- charLen = Tcl_UtfToUniChar(argv[1], &character);
- if (argv[1][charLen]) {
+ charLen = TclUtfToUCS4(argv[1], &character);
+ if ((character & ~0xFF) || argv[1][charLen]) {
goto badXchar;
}
dcb.XoffChar = (char) character;