summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-07-05 10:00:58 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-07-05 10:00:58 (GMT)
commit6dbf2896b1e888032b511b182f52c5e9544db86c (patch)
tree9c0659edfca4ad4c3f8478419313f9e66fea6e1e /generic/tclExecute.c
parent5b9decfc5c7c9e6feae2d789a73bcfd7f465825e (diff)
downloadtcl-6dbf2896b1e888032b511b182f52c5e9544db86c.zip
tcl-6dbf2896b1e888032b511b182f52c5e9544db86c.tar.gz
tcl-6dbf2896b1e888032b511b182f52c5e9544db86c.tar.bz2
Possible fix for [0439e1e1a3]: Slow detection of illegal expr argument
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index fab8590..8e6f4b5 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -9121,6 +9121,13 @@ IllegalExprOperandType(
}
if (GetNumberFromObj(NULL, opndPtr, &ptr, &type) != TCL_OK) {
+ Tcl_ObjTypeLengthProc *lengthProc = TclObjTypeHasProc(opndPtr, lengthProc);
+ if (lengthProc && lengthProc(opndPtr) > 1) {
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "can't use a list as operand of \"%s\"", op));
+ Tcl_SetErrorCode(interp, "ARITH", "DOMAIN", "list", (char *)NULL);
+ return;
+ }
description = "non-numeric string";
} else if (type == TCL_NUMBER_NAN) {
description = "non-numeric floating-point value";