From 85540d4ad2786c8d682fc4d6237ca0f936fb68df Mon Sep 17 00:00:00 2001 From: SciresM Date: Fri, 19 Oct 2018 12:15:18 +0900 Subject: [PATCH] fs.mitm: Fix correctness bug in LayeredRomfs::Read(). --- stratosphere/fs_mitm/source/fsmitm_layeredrom.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stratosphere/fs_mitm/source/fsmitm_layeredrom.cpp b/stratosphere/fs_mitm/source/fsmitm_layeredrom.cpp index 4a11580fa..ed6ad63a1 100644 --- a/stratosphere/fs_mitm/source/fsmitm_layeredrom.cpp +++ b/stratosphere/fs_mitm/source/fsmitm_layeredrom.cpp @@ -124,12 +124,14 @@ Result LayeredRomFS::Read(void *buffer, size_t size, u64 offset) { fatalSimple(0xF601); } read_so_far += cur_read_size; + offset += cur_read_size; } else { /* Handle padding explicitly. */ cur_source_ind++; /* Zero out the padding we skip, here. */ - memset((void *)((uintptr_t)buffer + read_so_far), 0, ((*this->p_source_infos)[cur_source_ind]).virtual_offset - (cur_source->virtual_offset + cur_source->size)); - read_so_far += ((*this->p_source_infos)[cur_source_ind]).virtual_offset - (cur_source->virtual_offset + cur_source->size); + memset((void *)((uintptr_t)buffer + read_so_far), 0, ((*this->p_source_infos)[cur_source_ind]).virtual_offset - offset); + read_so_far += ((*this->p_source_infos)[cur_source_ind]).virtual_offset - offset; + offset = ((*this->p_source_infos)[cur_source_ind]).virtual_offset; } }