forked from Mirrorlandia_minetest/minetest
Safety check the map's blocksize (#12895)
This commit is contained in:
parent
88820cd31c
commit
9aaed75eea
@ -390,6 +390,8 @@ void loadGameConfAndInitWorld(const std::string &path, const std::string &name,
|
|||||||
conf.set("mod_storage_backend", "sqlite3");
|
conf.set("mod_storage_backend", "sqlite3");
|
||||||
conf.setBool("creative_mode", g_settings->getBool("creative_mode"));
|
conf.setBool("creative_mode", g_settings->getBool("creative_mode"));
|
||||||
conf.setBool("enable_damage", g_settings->getBool("enable_damage"));
|
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())) {
|
if (!conf.updateConfigFile(worldmt_path.c_str())) {
|
||||||
throw BaseException("Failed to update the config file");
|
throw BaseException("Failed to update the config file");
|
||||||
|
@ -420,6 +420,13 @@ void ServerEnvironment::init()
|
|||||||
|
|
||||||
// If we open world.mt read the backend configurations.
|
// If we open world.mt read the backend configurations.
|
||||||
if (succeeded) {
|
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
|
// Read those values before setting defaults
|
||||||
bool player_backend_exists = conf.exists("player_backend");
|
bool player_backend_exists = conf.exists("player_backend");
|
||||||
bool auth_backend_exists = conf.exists("auth_backend");
|
bool auth_backend_exists = conf.exists("auth_backend");
|
||||||
|
Loading…
Reference in New Issue
Block a user