From 43051ffe4100a8f59bd93dcb3002a3455a117018 Mon Sep 17 00:00:00 2001 From: "j4ck.fr0st" Date: Wed, 3 Feb 2010 20:29:49 +0000 Subject: some cleanup, housekeeping for error cases and increased a few buffer sizes that are overflown by its content. Thanks to Fatalis for the initial patch and pointing us to cppcheck. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5004 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/SysConf.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'Source/Core/Common/Src/SysConf.cpp') diff --git a/Source/Core/Common/Src/SysConf.cpp b/Source/Core/Common/Src/SysConf.cpp index 3477770816..c9a86e6e15 100644 --- a/Source/Core/Common/Src/SysConf.cpp +++ b/Source/Core/Common/Src/SysConf.cpp @@ -49,18 +49,32 @@ SysConf::~SysConf() bool SysConf::LoadFromFile(const char *filename) { + // Basic check + u64 size = File::GetSize(filename); + if (size == 0) + return false; //most likely: file does not exist + if (size != SYSCONF_SIZE) + { + PanicAlert("Your SYSCONF file is the wrong size - should be 0x%04x (but is 0x%04x)", + SYSCONF_SIZE, size); + return false; + } FILE* f = fopen(filename, "rb"); if (f == NULL) return false; - - // Basic check - if (File::GetSize(filename) != SYSCONF_SIZE) + bool result = LoadFromFileInternal(f); + if (result) { - PanicAlert("Your SYSCONF file is the wrong size - should be 0x%04x", SYSCONF_SIZE); - return false; + // OK, done! + m_Filename = filename; } + fclose(f); + return result; +} +bool SysConf::LoadFromFileInternal(FILE *f) +{ // Fill in infos if (fread(&m_Header.version, sizeof(m_Header.version), 1, f) != 1) return false; if (fread(&m_Header.numEntries, sizeof(m_Header.numEntries), 1, f) != 1) return false; @@ -123,9 +137,6 @@ bool SysConf::LoadFromFile(const char *filename) } } - // OK!, done! - m_Filename = filename; - fclose(f); return true; } -- cgit v1.2.3