diff --git a/tools/editor/editor_project.cpp b/tools/editor/editor_project.cpp index a8ae327a..3dcc52fb 100644 --- a/tools/editor/editor_project.cpp +++ b/tools/editor/editor_project.cpp @@ -55,7 +55,17 @@ bool EditorProject::load(const std::string& path) { zones.clear(); if (j.contains("zones") && j["zones"].is_array()) { + // Cap project zones — same defense pattern as the other + // editor JSON loaders. WoW only supports 65535 maps total + // and the editor loads one tile at a time, so 1024 zones + // per project is plenty. + constexpr size_t kMaxZones = 1024; for (const auto& jz : j["zones"]) { + if (zones.size() >= kMaxZones) { + LOG_WARNING("Project zone cap reached (", kMaxZones, + ") — remaining entries dropped"); + break; + } ProjectZone z; z.mapName = jz.value("mapName", ""); z.tileX = jz.value("tileX", 32);