summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--unix/tclUnixInit.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 8af16e3..6085ae9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-02-08 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * unix/tclUnixInit.c (TclpCheckStackSpace): do stack size checks
+ with unsigned size_t to correctly validate stackSize in the 2^31+
+ range.
+
2007-02-08 Don Porter <dgp@users.sourceforge.net>
* generic/tclNamesp.c: Corrected broken logic in Tcl_DeleteNamespace()
diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c
index 7db0e4c..3568bd6 100644
--- a/unix/tclUnixInit.c
+++ b/unix/tclUnixInit.c
@@ -7,7 +7,7 @@
* Copyright (c) 1999 by Scriptics Corporation.
* All rights reserved.
*
- * RCS: @(#) $Id: tclUnixInit.c,v 1.67 2006/09/10 17:04:07 das Exp $
+ * RCS: @(#) $Id: tclUnixInit.c,v 1.68 2007/02/08 23:11:21 hobbs Exp $
*/
#include "tclInt.h"
@@ -1030,7 +1030,7 @@ TclpCheckStackSpace(void)
/* Most variables are actually in a
* thread-specific data block to minimise the
* impact on the stack. */
- register ptrdiff_t stackUsed;
+ register size_t stackUsed;
int localVar; /* Reference to somewhere on the local stack.
* This is declared last so it's as "deep" as
* possible. */
@@ -1089,7 +1089,7 @@ TclpCheckStackSpace(void)
* Now we perform the actual check. Are we about to blow our stack frame?
*/
- if (stackUsed < (ptrdiff_t) tsdPtr->stackSize) {
+ if (stackUsed < tsdPtr->stackSize) {
STACK_DEBUG(("stack OK\tin:%p\tout:%p\tuse:%04X\tmax:%04X\n",
&localVar, tsdPtr->outerVarPtr, stackUsed, tsdPtr->stackSize));
return 1;