From 0942b8e2b7ea76e5a60a43fc137d732a5ea8a1d0 Mon Sep 17 00:00:00 2001 From: Gabriel Corona Date: Mon, 5 Oct 2015 13:45:05 +0200 Subject: [PATCH] [mc] Fix loop bound checking using heaplimit --- src/mc/mc_diff.cpp | 10 +++++----- src/xbt/mmalloc/mm_module.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mc/mc_diff.cpp b/src/mc/mc_diff.cpp index fc871b435f..e8ff3cc068 100644 --- a/src/mc/mc_diff.cpp +++ b/src/mc/mc_diff.cpp @@ -331,7 +331,7 @@ int mmalloc_compare_heap(simgrid::mc::Snapshot* snapshot1, simgrid::mc::Snapshot const malloc_info* heapinfos2 = snapshot2->read( (std::uint64_t)heapinfo_address, simgrid::mc::ProcessIndexMissing); - while (i1 <= state->heaplimit) { + while (i1 < state->heaplimit) { const malloc_info* heapinfo1 = (const malloc_info*) MC_region_read(heap_region1, &heapinfo_temp1, &heapinfos1[i1], sizeof(malloc_info)); const malloc_info* heapinfo2 = (const malloc_info*) MC_region_read(heap_region2, &heapinfo_temp2, &heapinfos2[i1], sizeof(malloc_info)); @@ -395,7 +395,7 @@ int mmalloc_compare_heap(simgrid::mc::Snapshot* snapshot1, simgrid::mc::Snapshot } - while (i2 <= state->heaplimit && !equal) { + while (i2 < state->heaplimit && !equal) { addr_block2 = (ADDR2UINT(i2) - 1) * BLOCKSIZE + (char *) state->std_heap_copy.heapbase; @@ -480,7 +480,7 @@ int mmalloc_compare_heap(simgrid::mc::Snapshot* snapshot1, simgrid::mc::Snapshot } - while (i2 <= state->heaplimit && !equal) { + while (i2 < state->heaplimit && !equal) { const malloc_info* heapinfo2b = (const malloc_info*) MC_region_read( heap_region2, &heapinfo_temp2b, &heapinfos2[i2], @@ -554,7 +554,7 @@ int mmalloc_compare_heap(simgrid::mc::Snapshot* snapshot1, simgrid::mc::Snapshot /* All blocks/fragments are equal to another block/fragment ? */ size_t i = 1, j = 0; - for(i = 1; i <= state->heaplimit; i++) { + for(i = 1; i < state->heaplimit; i++) { const malloc_info* heapinfo1 = (const malloc_info*) MC_region_read( heap_region1, &heapinfo_temp1, &heapinfos1[i], sizeof(malloc_info)); if (heapinfo1->type == MMALLOC_TYPE_UNFRAGMENTED) { @@ -594,7 +594,7 @@ int mmalloc_compare_heap(simgrid::mc::Snapshot* snapshot1, simgrid::mc::Snapshot if (i1 == state->heaplimit) XBT_DEBUG("Number of blocks/fragments not found in heap1 : %d", nb_diff1); - for (i=1; i <= state->heaplimit; i++) { + for (i=1; i < state->heaplimit; i++) { const malloc_info* heapinfo2 = (const malloc_info*) MC_region_read( heap_region2, &heapinfo_temp2, &heapinfos2[i], sizeof(malloc_info)); if (heapinfo2->type == MMALLOC_TYPE_UNFRAGMENTED) { diff --git a/src/xbt/mmalloc/mm_module.c b/src/xbt/mmalloc/mm_module.c index 8d3b0d03ae..4ca13afefc 100644 --- a/src/xbt/mmalloc/mm_module.c +++ b/src/xbt/mmalloc/mm_module.c @@ -360,7 +360,7 @@ void mmalloc_postexit(void) size_t mmalloc_get_bytes_used_remote(size_t heaplimit, const malloc_info* heapinfo) { int bytes = 0; - for (size_t i=0; i<=heaplimit; ++i){ + for (size_t i=0; i < heaplimit; ++i){ if (heapinfo[i].type == MMALLOC_TYPE_UNFRAGMENTED){ if (heapinfo[i].busy_block.busy_size > 0) bytes += heapinfo[i].busy_block.busy_size; -- 2.20.1