diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-09-02 15:16:30 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-09-02 15:16:30 (GMT) |
| commit | 46cf6812fcfb415aae1696cf0b29cd2a6a77917a (patch) | |
| tree | 5bf912ecd2f43ac0c8eda7d87e78b5b1273240ec /generic/tclBasic.c | |
| parent | cd3fd901aac106c723476811fc2a3b9d7e7fa9d9 (diff) | |
| download | tcl-46cf6812fcfb415aae1696cf0b29cd2a6a77917a.zip tcl-46cf6812fcfb415aae1696cf0b29cd2a6a77917a.tar.gz tcl-46cf6812fcfb415aae1696cf0b29cd2a6a77917a.tar.bz2 | |
TIP #627: Some more protection against invalid objc values
Diffstat (limited to 'generic/tclBasic.c')
| -rw-r--r-- | generic/tclBasic.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 85b74b4..4bacba6 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -9192,6 +9192,11 @@ Tcl_NRCallObjProc2( size_t objc, Tcl_Obj *const objv[]) { + if (objc > INT_MAX) { + Tcl_WrongNumArgs(interp, 1, objv, "?args?"); + return TCL_ERROR; + } + NRE_callback *rootPtr = TOP_CB(interp); CmdWrapperInfo *info = (CmdWrapperInfo *)ckalloc(sizeof(CmdWrapperInfo)); info->clientData = clientData; @@ -9237,6 +9242,9 @@ static int cmdWrapperNreProc( Tcl_Obj *const objv[]) { CmdWrapperInfo *info = (CmdWrapperInfo *)clientData; + if (objc < 0) { + objc = -1; + } return info->nreProc(info->clientData, interp, objc, objv); } |
