mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
Fixed get_height to ensure that SK_MAXHEIGHT-1 is the maximum level we
will allocate for a skip list entry as many routines use arrays of size SK_MAXHEIGHT to hold a set of level pointers which means that a level of SK_MAXHEIGHT is not valid due to C arrays being zero based. This led to a number of subtle and hard to locate problems caused by stack based arrays being overflowed by one entry when a node was allocated with the maximum level. As each node only has a one in two million or so chance of getting a level of SK_MAXHEIGHT this didn't actually happen all that often. BUG: 91028 git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2862
This commit is contained in:
parent
a530ca4130
commit
8e98a4127a
@ -112,7 +112,7 @@ static inline Int get_height(void)
|
||||
{
|
||||
UInt ret = 0;
|
||||
|
||||
while((ret < SK_MAXHEIGHT) && (random() & 1))
|
||||
while((ret < SK_MAXHEIGHT - 1) && (random() & 1))
|
||||
ret++;
|
||||
|
||||
return ret;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user