From 15a36c2b44761be8ef9d533a938f41d2c7748ad5 Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 15 Jul 2003 20:51:48 +0000 Subject: * generic/tclCompCmds.c (TclCompileIfCmd): Prior fix of Bug 711371 on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] --- ChangeLog | 5 +++++ generic/tclCompCmds.c | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 36983de..cbda2c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-15 Don Porter + + * generic/tclCompCmds.c (TclCompileIfCmd): Prior fix of Bug 711371 + on 2003-04-07 introduced a buffer overflow. Corrected. [Bug 771613] + 2003-07-15 Donal K. Fellows * generic/tclCmdIL.c (SortCompare): Cleared up confusing error diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 644b807..42b8448 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.1 2003/04/07 20:03:05 dgp Exp $ + * RCS: @(#) $Id: tclCompCmds.c,v 1.39.2.2 2003/07/15 20:51:49 dgp Exp $ */ #include "tclInt.h" @@ -1197,7 +1197,7 @@ TclCompileIfCmd(interp, parsePtr, envPtr) if (wordIdx >= numWords) { sprintf(buffer, "wrong # args: no expression after \"%.*s\" argument", - numBytes, word); + (numBytes > 50 ? 50 : numBytes), word); Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), buffer, -1); code = TCL_ERROR; @@ -1259,7 +1259,10 @@ TclCompileIfCmd(interp, parsePtr, envPtr) tokenPtr = testTokenPtr + (testTokenPtr->numComponents + 1); wordIdx++; if (wordIdx >= numWords) { - sprintf(buffer, "wrong # args: no script following \"%.*s\" argument", testTokenPtr->size, testTokenPtr->start); + sprintf(buffer, + "wrong # args: no script following \"%.*s\" argument", + (testTokenPtr->size > 50 ? 50 : testTokenPtr->size), + testTokenPtr->start); Tcl_ResetResult(interp); Tcl_AppendToObj(Tcl_GetObjResult(interp), buffer, -1); code = TCL_ERROR; -- cgit v0.12