From b559a6534686b209f185563176e745531b17faae Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 15 Jun 2020 12:13:42 +0100 Subject: [PATCH] RegionLoader: account for possible corrupted header pointing to itself --- src/pocketmine/level/format/io/region/RegionLoader.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pocketmine/level/format/io/region/RegionLoader.php b/src/pocketmine/level/format/io/region/RegionLoader.php index e25d00e7b..4e86589b6 100644 --- a/src/pocketmine/level/format/io/region/RegionLoader.php +++ b/src/pocketmine/level/format/io/region/RegionLoader.php @@ -277,8 +277,11 @@ class RegionLoader{ if($offset === 0 or $sectorCount === 0){ $this->locationTable[$i] = null; + }elseif($offset >= self::FIRST_SECTOR){ + $this->bumpNextFreeSector($this->locationTable[$i] = new RegionLocationTableEntry($offset, $sectorCount, $timestamp)); }else{ - $this->bumpNextFreeSector($this->locationTable[$i] = new RegionLocationTableEntry($offset, $index & 0xff, $timestamp)); + self::getChunkCoords($i, $chunkXX, $chunkZZ); + throw new CorruptedRegionException("Invalid region header entry for x=$chunkXX z=$chunkZZ, offset overlaps with header"); } }