summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorskidau <skidau@gmail.com>2015-07-12 15:34:56 +1000
committerskidau <skidau@gmail.com>2015-07-12 15:34:56 +1000
commitcc79334faf14c8525d828eaafa99ed6432842de4 (patch)
tree07de680c5570cadbf0a2d9ab63cddfff07ed1804 /Source
parente14816351e3e4d3b7c6be702d17ce28546b9bc96 (diff)
parent9018b546c71932a46a85222a3de7a989184361ec (diff)
Merge pull request #2712 from JosJuice/wbfs-beyond-end-of-disc
WbfsBlob: Don't enter an infinite loop when reading beyond end of disc
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/DiscIO/WbfsBlob.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/Source/Core/DiscIO/WbfsBlob.cpp b/Source/Core/DiscIO/WbfsBlob.cpp
index ef90026621..5c0ac028ea 100644
--- a/Source/Core/DiscIO/WbfsBlob.cpp
+++ b/Source/Core/DiscIO/WbfsBlob.cpp
@@ -115,8 +115,10 @@ bool WbfsFileReader::Read(u64 offset, u64 nbytes, u8* out_ptr)
{
while (nbytes)
{
- u64 read_size = 0;
+ u64 read_size;
File::IOFile& data_file = SeekToCluster(offset, &read_size);
+ if (read_size == 0)
+ return false;
read_size = (read_size > nbytes) ? nbytes : read_size;
if (!data_file.ReadBytes(out_ptr, read_size))
@@ -160,6 +162,8 @@ File::IOFile& WbfsFileReader::SeekToCluster(u64 offset, u64* available)
}
PanicAlert("Read beyond end of disc");
+ if (available)
+ *available = 0;
m_files[0]->file.Seek(0, SEEK_SET);
return m_files[0]->file;
}