diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-07-05 10:00:58 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-07-05 10:00:58 (GMT) |
| commit | 6dbf2896b1e888032b511b182f52c5e9544db86c (patch) | |
| tree | 9c0659edfca4ad4c3f8478419313f9e66fea6e1e /generic/tclObj.c | |
| parent | 5b9decfc5c7c9e6feae2d789a73bcfd7f465825e (diff) | |
| download | tcl-6dbf2896b1e888032b511b182f52c5e9544db86c.zip tcl-6dbf2896b1e888032b511b182f52c5e9544db86c.tar.gz tcl-6dbf2896b1e888032b511b182f52c5e9544db86c.tar.bz2 | |
Possible fix for [0439e1e1a3]: Slow detection of illegal expr argument
Diffstat (limited to 'generic/tclObj.c')
| -rw-r--r-- | generic/tclObj.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/generic/tclObj.c b/generic/tclObj.c index 7155ebb..dc129ab 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -3679,6 +3679,13 @@ Tcl_GetNumberFromObj( void **clientDataPtr, int *typePtr) { + Tcl_ObjTypeLengthProc *lengthProc = TclObjTypeHasProc(objPtr, lengthProc); + if (lengthProc && lengthProc(objPtr) != 1) { + if (interp) { + Tcl_SetObjResult(interp, Tcl_NewStringObj("expected number but got a list", -1)); + } + return TCL_ERROR; + } do { if (TclHasInternalRep(objPtr, &tclDoubleType)) { if (isnan(objPtr->internalRep.doubleValue)) { |
