diff options
author | lhofhansl <larsh@apache.org> | 2022-10-27 19:31:42 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-27 19:31:42 -0700 |
commit | 9aaed75eea0145ef3ee88bdd6d5507e5fd8d76c2 (patch) | |
tree | c884b5ade75411cf8a693519304e7d5d930b7f83 /src | |
parent | 88820cd31c2fe21c8c16ee547a3335131e8ba009 (diff) | |
download | minetest-9aaed75eea0145ef3ee88bdd6d5507e5fd8d76c2.tar.xz |
Safety check the map's blocksize (#12895)
Diffstat (limited to 'src')
-rw-r--r-- | src/content/subgames.cpp | 2 | ||||
-rw-r--r-- | src/serverenvironment.cpp | 7 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/content/subgames.cpp b/src/content/subgames.cpp index d0de926ef..3658fa83e 100644 --- a/src/content/subgames.cpp +++ b/src/content/subgames.cpp @@ -390,6 +390,8 @@ void loadGameConfAndInitWorld(const std::string &path, const std::string &name, conf.set("mod_storage_backend", "sqlite3"); conf.setBool("creative_mode", g_settings->getBool("creative_mode")); conf.setBool("enable_damage", g_settings->getBool("enable_damage")); + if (MAP_BLOCKSIZE != 16) + conf.set("blocksize", std::to_string(MAP_BLOCKSIZE)); if (!conf.updateConfigFile(worldmt_path.c_str())) { throw BaseException("Failed to update the config file"); diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index dfa3e0961..4cdb21a4b 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -420,6 +420,13 @@ void ServerEnvironment::init() // If we open world.mt read the backend configurations. if (succeeded) { + // Check that the world's blocksize matches the compiled MAP_BLOCKSIZE + u16 blocksize = 16; + conf.getU16NoEx("blocksize", blocksize); + if (blocksize != MAP_BLOCKSIZE) { + throw BaseException(std::string("The map's blocksize is not supported.")); + } + // Read those values before setting defaults bool player_backend_exists = conf.exists("player_backend"); bool auth_backend_exists = conf.exists("auth_backend"); |