summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2011-07-14 03:19:31 (GMT)
committerdgp <dgp@users.sourceforge.net>2011-07-14 03:19:31 (GMT)
commit3cf6b18da0609dee847149b261634a77b34f502e (patch)
tree8f24f27b6d653067271e863581cc67ed6dd18f94
parent02ef1632d034f070d79c64264efa65fce9fc5af7 (diff)
parentaa1a72b31337d3fa30a90286eac8374c296691be (diff)
downloadtcl-3cf6b18da0609dee847149b261634a77b34f502e.zip
tcl-3cf6b18da0609dee847149b261634a77b34f502e.tar.gz
tcl-3cf6b18da0609dee847149b261634a77b34f502e.tar.bz2
3366265 Allocate proper size buffer for TclConvertElement() to write to.
-rw-r--r--generic/tclIndexObj.c6
-rw-r--r--tests/proc.test5
2 files changed, 9 insertions, 2 deletions
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c
index 5b367d6..76c2dea 100644
--- a/generic/tclIndexObj.c
+++ b/generic/tclIndexObj.c
@@ -954,7 +954,8 @@ Tcl_WrongNumArgs(
len = TclScanElement(elementStr, elemLen, &flags);
if (MAY_QUOTE_WORD && len != elemLen) {
- char *quotedElementStr = TclStackAlloc(interp, (unsigned)len);
+ char *quotedElementStr = TclStackAlloc(interp,
+ (unsigned)len + 1);
len = TclConvertElement(elementStr, elemLen,
quotedElementStr, flags);
@@ -1009,7 +1010,8 @@ Tcl_WrongNumArgs(
len = TclScanElement(elementStr, elemLen, &flags);
if (MAY_QUOTE_WORD && len != elemLen) {
- char *quotedElementStr = TclStackAlloc(interp,(unsigned) len);
+ char *quotedElementStr = TclStackAlloc(interp,
+ (unsigned) len + 1);
len = TclConvertElement(elementStr, elemLen,
quotedElementStr, flags);
diff --git a/tests/proc.test b/tests/proc.test
index c28e881..ed3c4b6 100644
--- a/tests/proc.test
+++ b/tests/proc.test
@@ -187,6 +187,11 @@ test proc-3.6 {TclObjInterpProc, proper quoting of proc name, Bug 942757} -body
{a b c}
} -returnCodes error -result {wrong # args: should be "{a b c} x"}
+test proc-3.7 {TclObjInterpProc, wrong num args, Bug 3366265} {
+ proc {} {x} {}
+ list [catch {{}} msg] $msg
+} {1 {wrong # args: should be "{} x"}}
+
catch {namespace delete {*}[namespace children :: test_ns_*]}
catch {rename p ""}
catch {rename {} ""}