summaryrefslogtreecommitdiffstats
path: root/generic/tclInterp.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2011-09-16 08:12:48 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2011-09-16 08:12:48 (GMT)
commit679c72e5a2c14ab53b227e058c4ef06edde6b7a4 (patch)
treeb28a3a30c684e4377f39e18d3b4689891cab876b /generic/tclInterp.c
parentfe0e5c84250f9e45fcbf320d121a961c767b3b5a (diff)
parentef09f86d39a751b46143aa33f2ee808b31a6a984 (diff)
downloadtcl-679c72e5a2c14ab53b227e058c4ef06edde6b7a4.zip
tcl-679c72e5a2c14ab53b227e058c4ef06edde6b7a4.tar.gz
tcl-679c72e5a2c14ab53b227e058c4ef06edde6b7a4.tar.bz2
merge trunk to feature branchtip_388_impl
Diffstat (limited to 'generic/tclInterp.c')
-rw-r--r--generic/tclInterp.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/generic/tclInterp.c b/generic/tclInterp.c
index a156a57..5b6d14f 100644
--- a/generic/tclInterp.c
+++ b/generic/tclInterp.c
@@ -4345,6 +4345,19 @@ SlaveCommandLimitCmd(
ScriptLimitCallback *limitCBPtr;
Tcl_HashEntry *hPtr;
+ /*
+ * First, ensure that we are not reading or writing the calling
+ * interpreter's limits; it may only manipulate its children. Note that
+ * the low level API enforces this with Tcl_Panic, which we want to
+ * avoid. [Bug 3398794]
+ */
+
+ if (interp == slaveInterp) {
+ Tcl_AppendResult(interp,
+ "limits on current interpreter inaccessible", NULL);
+ return TCL_ERROR;
+ }
+
if (objc == consumedObjc) {
Tcl_Obj *dictPtr;
@@ -4519,6 +4532,19 @@ SlaveTimeLimitCmd(
ScriptLimitCallback *limitCBPtr;
Tcl_HashEntry *hPtr;
+ /*
+ * First, ensure that we are not reading or writing the calling
+ * interpreter's limits; it may only manipulate its children. Note that
+ * the low level API enforces this with Tcl_Panic, which we want to
+ * avoid. [Bug 3398794]
+ */
+
+ if (interp == slaveInterp) {
+ Tcl_AppendResult(interp,
+ "limits on current interpreter inaccessible", NULL);
+ return TCL_ERROR;
+ }
+
if (objc == consumedObjc) {
Tcl_Obj *dictPtr;