summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-13 13:22:07 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-13 13:22:07 (GMT)
commitbe409f301ed5dff8685300d8f28e0e06711ee22d (patch)
tree2af3633addbadbe3413d702823b458fbbe5cced4
parent71c8acf7e6000d377ec146dae352142ad9c3b5f3 (diff)
parent2171b321cf1ec2d7c671d02dfea59860bccc06f2 (diff)
downloadtcl-be409f301ed5dff8685300d8f28e0e06711ee22d.zip
tcl-be409f301ed5dff8685300d8f28e0e06711ee22d.tar.gz
tcl-be409f301ed5dff8685300d8f28e0e06711ee22d.tar.bz2
Fix [69218ab7b]: TEBCResume(): buffer over-read in INST_STR_MAP
-rw-r--r--generic/tclExecute.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 5dc506a..e5a6b71 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -5855,7 +5855,9 @@ TEBCresume(
p = ustring1;
end = ustring1 + length;
for (; ustring1 < end; ustring1++) {
- if ((*ustring1 == *ustring2) && (length2==1 ||
+ if ((*ustring1 == *ustring2) &&
+ /* Fix bug [69218ab7b]: restrict max compare length. */
+ (end-ustring1 >= length2) && (length2==1 ||
memcmp(ustring1, ustring2, sizeof(Tcl_UniChar) * length2)
== 0)) {
if (p != ustring1) {