[CRIU] [PATCH] zdtm/maps007: don't use signed values in calculations
Andrey Vagin
avagin at openvz.org
Wed Dec 3 03:29:01 PST 2014
From: root <root at dhcp-10-30-21-119.sw.ru>
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 at openvz.org>
---
test/zdtm/live/transition/maps007.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/test/zdtm/live/transition/maps007.c b/test/zdtm/live/transition/maps007.c
index 21960ef..53b0b4c 100644
--- a/test/zdtm/live/transition/maps007.c
+++ b/test/zdtm/live/transition/maps007.c
@@ -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;
--
1.9.3
More information about the CRIU
mailing list