summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Seipp <austin@well-typed.com>2014-04-23 03:41:44 -0500
committerAustin Seipp <austin@well-typed.com>2014-04-27 04:18:20 -0500
commit111b8454cc1b64da5b9816b89d79f44a8ae24355 (patch)
tree7305f94cc03d429ebff0a2b9a2f231bbc66ee1e8
parent95da409719bab6f92229dc1a632c471e248d2fdd (diff)
downloadhaskell-111b8454cc1b64da5b9816b89d79f44a8ae24355.tar.gz
rts: Fix possible int overflow in resize_nursery
n_capabilities is declared as unsigned int (32bit), and so multiplication is 32-bit before being stored in a 64bit integer (StgWord). Instead, cast n_capabilities to StgWord before multiplying. Discovered by Coverity. CID 43164. Signed-off-by: Austin Seipp <austin@well-typed.com>
-rw-r--r--rts/sm/GC.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/rts/sm/GC.c b/rts/sm/GC.c
index 1ecbaf5ab1..d22a31eccb 100644
--- a/rts/sm/GC.c
+++ b/rts/sm/GC.c
@@ -1613,7 +1613,8 @@ resize_generations (void)
static void
resize_nursery (void)
{
- const StgWord min_nursery = RtsFlags.GcFlags.minAllocAreaSize * n_capabilities;
+ const StgWord min_nursery =
+ RtsFlags.GcFlags.minAllocAreaSize * (StgWord)n_capabilities;
if (RtsFlags.GcFlags.generations == 1)
{ // Two-space collector: