summaryrefslogtreecommitdiff
path: root/src/saveload/oldloader.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-01-18 22:44:53 +0000
committersmatz <smatz@openttd.org>2009-01-18 22:44:53 +0000
commit3bceaf41b452e166a0cdff7ebb4febd631004790 (patch)
treec1ba5c796a2ca418d5f45c2fc31ed5c459511b92 /src/saveload/oldloader.cpp
parenta46245f21f1f81709e3d093c6fcbca213c207e43 (diff)
downloadopenttd-3bceaf41b452e166a0cdff7ebb4febd631004790.tar.xz
(svn r15144) -Codechange: make sure we don't run out of bounds while determining old savegame name
Note this can't happen in current code
Diffstat (limited to 'src/saveload/oldloader.cpp')
-rw-r--r--src/saveload/oldloader.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/saveload/oldloader.cpp b/src/saveload/oldloader.cpp
index 922b0875e..d8009878a 100644
--- a/src/saveload/oldloader.cpp
+++ b/src/saveload/oldloader.cpp
@@ -25,6 +25,7 @@
#include "../variables.h"
#include "../strings_func.h"
#include "../effectvehicle_base.h"
+#include "../string_func.h"
#include "table/strings.h"
@@ -1571,19 +1572,23 @@ bool LoadOldSaveGame(const char *file)
return true;
}
-void GetOldSaveGameName(char *title, const char *path, const char *file)
+void GetOldSaveGameName(const char *path, const char *file, char *title, const char *last)
{
char filename[MAX_PATH];
- FILE *f;
+ char temp[HEADER_SIZE - 1];
snprintf(filename, lengthof(filename), "%s" PATHSEP "%s", path, file);
- f = fopen(filename, "rb");
- title[0] = '\0';
- title[48] = '\0';
+ FILE *f = fopen(filename, "rb");
+ temp[0] = '\0';
+ temp[HEADER_SIZE - 2] = '\0';
if (f == NULL) return;
- if (fread(title, 1, 48, f) != 48) snprintf(title, 48, "Corrupt file");
+ if (fread(temp, 1, HEADER_SIZE - 2, f) != HEADER_SIZE - 2) {
+ seprintf(title, last, "Corrupt file");
+ } else {
+ seprintf(title, last, temp);
+ }
fclose(f);
}