add explicit block fields total size limit - 240 bytes

This commit is contained in:
MihailRis 2024-10-02 17:08:46 +03:00
parent 221a34fa2e
commit e0a4876f3f
2 changed files with 9 additions and 0 deletions

View File

@ -255,6 +255,13 @@ void ContentLoader::loadBlock(
if (root.has("fields")) {
def.dataStruct = std::make_unique<data::StructLayout>();
def.dataStruct->deserialize(root["fields"]);
if (def.dataStruct->size() > MAX_BLOCK_FIELDS_SIZE) {
throw std::runtime_error(
util::quote(def.name) +
" fields total size exceeds limit (" +
std::to_string(def.dataStruct->size()) + "/" +
std::to_string(MAX_BLOCK_FIELDS_SIZE) + ")");
}
}
if (def.tickInterval == 0) {

View File

@ -26,6 +26,8 @@ inline constexpr uint FACE_PZ = 5;
/// complex hitboxes
inline constexpr uint BLOCK_AABB_GRID = 16;
inline constexpr size_t MAX_BLOCK_FIELDS_SIZE = 240;
inline std::string DEFAULT_MATERIAL = "base:stone";
struct block_funcs_set {