diff options
author | rubidium <rubidium@openttd.org> | 2013-11-23 13:18:29 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2013-11-23 13:18:29 +0000 |
commit | 3b2a92ea97f56cdd2d1870c1ae4afeae01d3f48e (patch) | |
tree | ed31b257e1cf33132020e3aa737dd3acc38aede7 /src/strings.cpp | |
parent | 78a316d349f02c76b89c6fd7597e7013c062133a (diff) | |
download | openttd-3b2a92ea97f56cdd2d1870c1ae4afeae01d3f48e.tar.xz |
(svn r26062) -Fix: beef up checks against invalid data in highscore and language files
Diffstat (limited to 'src/strings.cpp')
-rw-r--r-- | src/strings.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/strings.cpp b/src/strings.cpp index 0a6b23902..c3916dcf7 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1763,7 +1763,12 @@ bool ReadLanguagePack(const LanguageMetadata *lang) uint count = 0; for (uint i = 0; i < TAB_COUNT; i++) { - uint num = lang_pack->offsets[i]; + uint16 num = lang_pack->offsets[i]; + if (num > TAB_SIZE) { + free(lang_pack); + return false; + } + _langtab_start[i] = count; _langtab_num[i] = num; count += num; |