summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-12 15:50:30 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-12 15:50:30 (GMT)
commit2171b321cf1ec2d7c671d02dfea59860bccc06f2 (patch)
tree883ed31b87d287ba4aee8e8daaf1e31c0b1996f7
parent5608e51a46c5ddb594d05a3d9cbeace701b5dcc6 (diff)
downloadtcl-2171b321cf1ec2d7c671d02dfea59860bccc06f2.zip
tcl-2171b321cf1ec2d7c671d02dfea59860bccc06f2.tar.gz
tcl-2171b321cf1ec2d7c671d02dfea59860bccc06f2.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 7e014d4..aa5730a 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) {