diff options
| author | apnadkarni <apnmbx-wits@yahoo.com> | 2023-04-26 14:56:21 (GMT) |
|---|---|---|
| committer | apnadkarni <apnmbx-wits@yahoo.com> | 2023-04-26 14:56:21 (GMT) |
| commit | 5ddcd8fea990af78cce1ef7d706e0a0ce81a317b (patch) | |
| tree | 316e5bcda1d720300409a35f4bb478e86bbdc44a /generic/tclExecute.c | |
| parent | 025b74f7c7add01c5ca6654b03c29241c0845def (diff) | |
| download | tcl-5ddcd8fea990af78cce1ef7d706e0a0ce81a317b.zip tcl-5ddcd8fea990af78cce1ef7d706e0a0ce81a317b.tar.gz tcl-5ddcd8fea990af78cce1ef7d706e0a0ce81a317b.tar.bz2 | |
Fix for [7cddd2845c] (in progress)
Diffstat (limited to 'generic/tclExecute.c')
| -rw-r--r-- | generic/tclExecute.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 31a8695..1e16d68 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -981,10 +981,10 @@ GrowEvaluationStack( { ExecStack *esPtr = eePtr->execStackPtr, *oldPtr = NULL; size_t newBytes; - int growth = growth1; - int newElems, currElems, needed = growth - (esPtr->endPtr - esPtr->tosPtr); + Tcl_Size growth = growth1; + Tcl_Size newElems, currElems, needed = growth - (esPtr->endPtr - esPtr->tosPtr); Tcl_Obj **markerPtr = esPtr->markerPtr, **memStart; - int moveWords = 0; + Tcl_Size moveWords = 0; if (move) { if (!markerPtr) { @@ -2825,8 +2825,20 @@ TEBCresume( pc += pcAdjustment; TEBC_YIELD(); - return TclNREvalObjv(interp, objc, objv, + if (objc > INT_MAX) { + if (interp) { + Tcl_SetObjResult( + interp, + Tcl_ObjPrintf("Argument count %" TCL_SIZE_MODIFIER + "d exceeds limit %d.", + objc, + (int)INT_MAX)); + } + return TCL_ERROR; + } else { + return TclNREvalObjv(interp, objc, objv, TCL_EVAL_NOERR | TCL_EVAL_SOURCE_IN_FRAME, NULL); + } case INST_INVOKE_REPLACE: objc = TclGetUInt4AtPtr(pc+1); |
