summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/VolumeGC.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2015-06-03 11:35:05 +0200
committerJosJuice <josjuice@gmail.com>2015-06-03 11:35:05 +0200
commit78b6ed0218da61bf75f3179850d780ed8f02f3bf (patch)
tree7a17a53de1503f76515a2b832943b69e19ef6696 /Source/Core/DiscIO/VolumeGC.cpp
parent349f9d549370d1b1ef7662e4cedef0c96133f232 (diff)
VolumeGC: Check that opening.bnr size matches type
The old code would accept files with BNR1 length and BNR2 type, which can be a problem when GetNames tries to read the extra BNR2 strings.
Diffstat (limited to 'Source/Core/DiscIO/VolumeGC.cpp')
-rw-r--r--Source/Core/DiscIO/VolumeGC.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/Source/Core/DiscIO/VolumeGC.cpp b/Source/Core/DiscIO/VolumeGC.cpp
index d4883645c9..fca22949ac 100644
--- a/Source/Core/DiscIO/VolumeGC.cpp
+++ b/Source/Core/DiscIO/VolumeGC.cpp
@@ -291,24 +291,24 @@ bool CVolumeGC::LoadBannerFile() const
file_system->ReadFile("opening.bnr", m_banner_file.data(), m_banner_file.size());
u32 bannerSignature = *(u32*)m_banner_file.data();
- switch (bannerSignature)
+ if (file_size == BNR1_SIZE && bannerSignature == 0x31524e42) // "BNR1"
{
- case 0x31524e42: // "BNR1"
m_banner_file_type = BANNER_BNR1;
- break;
- case 0x32524e42: // "BNR2"
+ }
+ else if (file_size == BNR2_SIZE && bannerSignature == 0x32524e42) // "BNR2"
+ {
m_banner_file_type = BANNER_BNR2;
- break;
- default:
+ }
+ else
+ {
m_banner_file_type = BANNER_INVALID;
- WARN_LOG(DISCIO, "Invalid opening.bnr type");
- break;
+ WARN_LOG(DISCIO, "Invalid opening.bnr. Type: %0x Size: %0lx", bannerSignature, (unsigned long)file_size);
}
}
else
{
m_banner_file_type = BANNER_INVALID;
- WARN_LOG(DISCIO, "Invalid opening.bnr size: %0lx", (unsigned long)file_size);
+ WARN_LOG(DISCIO, "Invalid opening.bnr. Size: %0lx", (unsigned long)file_size);
}
return m_banner_file_type != BANNER_INVALID;