summaryrefslogtreecommitdiff
path: root/src/strings.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2013-11-23 13:18:29 +0000
committerrubidium <rubidium@openttd.org>2013-11-23 13:18:29 +0000
commit3b2a92ea97f56cdd2d1870c1ae4afeae01d3f48e (patch)
treeed31b257e1cf33132020e3aa737dd3acc38aede7 /src/strings.cpp
parent78a316d349f02c76b89c6fd7597e7013c062133a (diff)
downloadopenttd-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.cpp7
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;