From 65874c25dbdc99464871344a74f97c6c8f90cec5 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sat, 6 Jul 2013 15:22:51 -0400 Subject: [PATCH] Mapgen V7: Fix out-of-bounds array access --- src/mapgen_v7.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mapgen_v7.cpp b/src/mapgen_v7.cpp index 9b8c2c53a..1579c313c 100644 --- a/src/mapgen_v7.cpp +++ b/src/mapgen_v7.cpp @@ -427,19 +427,19 @@ void MapgenV7::generateMountainTerrain() { return; MapNode n_stone(c_stone); - u32 index = 0; + u32 j = 0; for (s16 z = node_min.Z; z <= node_max.Z; z++) for (s16 y = node_min.Y; y <= node_max.Y; y++) { u32 vi = vm->m_area.index(node_min.X, y, z); for (s16 x = node_min.X; x <= node_max.X; x++) { - int j = (z - node_min.Z) * csize.X + (x - node_min.X); + int index = (z - node_min.Z) * csize.X + (x - node_min.X); - if (getMountainTerrainFromMap(index, j, y)) + if (getMountainTerrainFromMap(j, index, y)) vm->m_data[vi] = n_stone; vi++; - index++; + j++; } } } @@ -517,7 +517,9 @@ void MapgenV7::generateBiomes() { // boundary, but the chunk above has not been generated yet if (y == node_max.Y && c_above == CONTENT_IGNORE && y == heightmap[index] && c == c_stone) { - int j = z * zstride + y * ystride + x; + int j = (z - node_min.Z) * zstride + + (y - node_min.Y) * ystride + + (x - node_min.X); have_air = !getMountainTerrainFromMap(j, index, y); }