mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-26 03:25:30 +00:00
zdtm/maps007: don't use signed values in calculations
maps007 segfaults on i386, because "size" is calculated bigger than allowed. This occurs when the result of lrand48() * PAGE_SIZE is negative. In this case the % operation returns a negative value too, what is unexpected. Signed-off-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
bda033e1e9
commit
d64a49fdc6
1 changed files with 4 additions and 3 deletions
|
|
@ -12,8 +12,8 @@
|
|||
#include "zdtmtst.h"
|
||||
#include "lock.h"
|
||||
|
||||
#define MAP_SIZE (1 << 20)
|
||||
#define MEM_SIZE (1 << 29)
|
||||
#define MAP_SIZE (1UL << 20)
|
||||
#define MEM_SIZE (1UL << 29)
|
||||
#define PAGE_SIZE 4096
|
||||
|
||||
const char *test_doc = "create random mappings and touch memory";
|
||||
|
|
@ -93,7 +93,8 @@ int main(int argc, char **argv)
|
|||
count++;
|
||||
|
||||
p = start + ((lrand48() * PAGE_SIZE) % MEM_SIZE);
|
||||
size = (lrand48() * PAGE_SIZE) % (end - p);
|
||||
size = lrand48() * PAGE_SIZE;
|
||||
size %= (end - p);
|
||||
size %= MAP_SIZE;
|
||||
if (size == 0)
|
||||
size = PAGE_SIZE;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue