summaryrefslogtreecommitdiffstats
path: root/generic/tclBasic.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-09-02 15:16:30 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-09-02 15:16:30 (GMT)
commit46cf6812fcfb415aae1696cf0b29cd2a6a77917a (patch)
tree5bf912ecd2f43ac0c8eda7d87e78b5b1273240ec /generic/tclBasic.c
parentcd3fd901aac106c723476811fc2a3b9d7e7fa9d9 (diff)
downloadtcl-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.c8
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);
}