From 7c4a6456982254440d4e145fe0b250693a11975e Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 9 Jan 2010 23:11:23 +0100 Subject: [PATCH] fix SCM_STACK_OVERFLOW_P bug * libguile/stackchk.h (SCM_STACK_OVERFLOW_P): Fix a potential overflow, depending on the absolute values of the thread base and the stack limit. Thanks to Ivan Shcherbakov for the report. --- THANKS | 1 + libguile/stackchk.h | 8 +++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/THANKS b/THANKS index 94b86a102..30d57fc18 100644 --- a/THANKS +++ b/THANKS @@ -102,6 +102,7 @@ For fixes or providing information which led to a fix: Frank Schwidom John Steele Scott Thiemo Seufer + Ivan Shcherbakov Scott Shedden Alex Shinn Daniel Skarda diff --git a/libguile/stackchk.h b/libguile/stackchk.h index ed149067b..68dec762f 100644 --- a/libguile/stackchk.h +++ b/libguile/stackchk.h @@ -3,7 +3,7 @@ #ifndef SCM_STACKCHK_H #define SCM_STACKCHK_H -/* Copyright (C) 1995,1996,1998,2000, 2003, 2006, 2008, 2009 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,2000, 2003, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -37,12 +37,10 @@ #if defined BUILDING_LIBGUILE && defined STACK_CHECKING # if SCM_STACK_GROWS_UP # define SCM_STACK_OVERFLOW_P(s)\ - (SCM_STACK_PTR (s) \ - > (SCM_I_CURRENT_THREAD->base + SCM_STACK_LIMIT)) + ((SCM_STACK_PTR (s) - SCM_I_CURRENT_THREAD->base) > SCM_STACK_LIMIT) # else # define SCM_STACK_OVERFLOW_P(s)\ - (SCM_STACK_PTR (s) \ - < (SCM_I_CURRENT_THREAD->base - SCM_STACK_LIMIT)) + ((SCM_I_CURRENT_THREAD->base - SCM_STACK_PTR (s)) > SCM_STACK_LIMIT) # endif # define SCM_CHECK_STACK\ {\ -- 2.20.1