diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-05-13 16:51:16 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-05-13 16:51:16 (GMT) |
commit | 20098349b6daa26620340a85771135d1d752fc47 (patch) | |
tree | 9e6e5183ef0bb2e0051cf2621ecd565fee7b9667 /win | |
parent | 137310bc48c268ffa2c880ec847258e394e1475c (diff) | |
parent | 9cc2036c6436600b0dea8f4c153fa7a71fb1feeb (diff) | |
download | tcl-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.c | 10 |
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; |