1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

memory safeness

Just some more memory checks.

One memset appears to be wrong, is fixed now.

I think this might fix #1928, but please check.
This commit is contained in:
Michał Janiszewski
2015-09-13 21:41:37 +02:00
parent 597c9e19de
commit d58b4e3589
2 changed files with 23 additions and 4 deletions

View File

@@ -351,7 +351,7 @@ void LanguagePack::ParseGroupScenario(IStringReader *reader)
if (_currentScenarioOverride == nullptr) {
_scenarioOverrides.push_back(ScenarioOverride());
_currentScenarioOverride = &_scenarioOverrides[_scenarioOverrides.size() - 1];
memset(_currentScenarioOverride, 0, sizeof(ObjectOverride));
memset(_currentScenarioOverride, 0, sizeof(ScenarioOverride));
_currentScenarioOverride->filename = sb.GetString();
}
}

View File

@@ -75,7 +75,14 @@ int scenario_load_basic(const char *path, rct_s6_header *header, rct_s6_info *in
// Get filename
utf8 filename[MAX_PATH];
strcpy(filename, path_get_filename(path));
const char *temp_filename = path_get_filename(path);
int len = strnlen(temp_filename, MAX_PATH);
strncpy(filename, temp_filename, MAX_PATH);
if (len == MAX_PATH)
{
filename[MAX_PATH - 1] = '\0';
log_warning("truncated string %s", filename);
}
path_remove_extension(filename);
rct_string_id localisedStringIds[3];
@@ -229,7 +236,13 @@ int scenario_load_and_play_from_path(const char *path)
if (!scenario_load(path))
return 0;
strcpy(_scenarioPath, path);
int len = strnlen(path, MAX_PATH);
strncpy(_scenarioPath, path, len);
if (len == MAX_PATH)
{
_scenarioPath[MAX_PATH - 1] = '\0';
log_warning("truncated string %s", _scenarioPath);
}
_scenarioFileName = path_get_filename(_scenarioPath);
log_verbose("starting scenario, %s", path);
@@ -300,7 +313,13 @@ void scenario_begin()
{
// Get filename
utf8 filename[MAX_PATH];
strcpy(filename, _scenarioFileName);
int len = strnlen(_scenarioFileName, MAX_PATH);
strncpy(filename, _scenarioFileName, len);
if (len == MAX_PATH)
{
filename[MAX_PATH - 1] = '\0';
log_warning("truncated string %s", filename);
}
path_remove_extension(filename);
rct_string_id localisedStringIds[3];