From 3bceaf41b452e166a0cdff7ebb4febd631004790 Mon Sep 17 00:00:00 2001 From: smatz Date: Sun, 18 Jan 2009 22:44:53 +0000 Subject: (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 --- src/saveload/oldloader.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/saveload/oldloader.cpp') 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); } -- cgit v1.2.3-54-g00ecf