diff options
| author | 2018-09-04 17:01:40 -0400 | |
|---|---|---|
| committer | 2018-09-04 17:01:54 -0400 | |
| commit | c913136eb215699f9c8d51a8fd56490b9df7657f (patch) | |
| tree | 4564a416d8f200b69559164e2a50bdc690d49dbd /src/core/file_sys | |
| parent | drd: Parse title ID from program metadata (diff) | |
| download | yuzu-c913136eb215699f9c8d51a8fd56490b9df7657f.tar.gz yuzu-c913136eb215699f9c8d51a8fd56490b9df7657f.tar.xz yuzu-c913136eb215699f9c8d51a8fd56490b9df7657f.zip | |
bktr: Fix bucket overlap error
Diffstat (limited to 'src/core/file_sys')
| -rw-r--r-- | src/core/file_sys/content_archive.cpp | 3 | ||||
| -rw-r--r-- | src/core/file_sys/nca_patch.cpp | 4 | ||||
| -rw-r--r-- | src/core/file_sys/patch_manager.cpp | 3 | ||||
| -rw-r--r-- | src/core/file_sys/patch_manager.h | 1 | ||||
| -rw-r--r-- | src/core/file_sys/romfs_factory.cpp | 1 |
5 files changed, 6 insertions, 6 deletions
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp index 1c093d94f..79bfb6fec 100644 --- a/src/core/file_sys/content_archive.cpp +++ b/src/core/file_sys/content_archive.cpp | |||
| @@ -425,9 +425,6 @@ NCA::NCA(VirtualFile file_, VirtualFile bktr_base_romfs_, u64 bktr_base_ivfc_off | |||
| 425 | } else { | 425 | } else { |
| 426 | files.push_back(std::move(dec)); | 426 | files.push_back(std::move(dec)); |
| 427 | romfs = files.back(); | 427 | romfs = files.back(); |
| 428 | const u64 raw_size = | ||
| 429 | MEDIA_OFFSET_MULTIPLIER * (header.section_tables[i].media_end_offset - | ||
| 430 | header.section_tables[i].media_offset); | ||
| 431 | } | 428 | } |
| 432 | } else if (section.raw.header.filesystem_type == NCASectionFilesystemType::PFS0) { | 429 | } else if (section.raw.header.filesystem_type == NCASectionFilesystemType::PFS0) { |
| 433 | u64 offset = (static_cast<u64>(header.section_tables[i].media_offset) * | 430 | u64 offset = (static_cast<u64>(header.section_tables[i].media_offset) * |
diff --git a/src/core/file_sys/nca_patch.cpp b/src/core/file_sys/nca_patch.cpp index 1e93000d5..e0111bffc 100644 --- a/src/core/file_sys/nca_patch.cpp +++ b/src/core/file_sys/nca_patch.cpp | |||
| @@ -50,7 +50,7 @@ size_t BKTR::Read(u8* data, size_t length, size_t offset) const { | |||
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | if (!bktr_read) { | 52 | if (!bktr_read) { |
| 53 | ASSERT_MSG(section_offset > ivfc_offset, "Offset calculation negative."); | 53 | ASSERT_MSG(section_offset >= ivfc_offset, "Offset calculation negative."); |
| 54 | return base_romfs->Read(data, length, section_offset - ivfc_offset); | 54 | return base_romfs->Read(data, length, section_offset - ivfc_offset); |
| 55 | } | 55 | } |
| 56 | 56 | ||
| @@ -118,7 +118,7 @@ std::pair<size_t, size_t> BKTR::SearchBucketEntry(u64 offset, BlockType block, | |||
| 118 | 118 | ||
| 119 | size_t bucket_id = std::count_if(block.base_offsets.begin() + 1, | 119 | size_t bucket_id = std::count_if(block.base_offsets.begin() + 1, |
| 120 | block.base_offsets.begin() + block.number_buckets, | 120 | block.base_offsets.begin() + block.number_buckets, |
| 121 | [&offset](u64 base_offset) { return base_offset < offset; }); | 121 | [&offset](u64 base_offset) { return base_offset <= offset; }); |
| 122 | 122 | ||
| 123 | const auto bucket = buckets[bucket_id]; | 123 | const auto bucket = buckets[bucket_id]; |
| 124 | 124 | ||
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp index fa2fbe5e1..40675de35 100644 --- a/src/core/file_sys/patch_manager.cpp +++ b/src/core/file_sys/patch_manager.cpp | |||
| @@ -2,10 +2,13 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include "core/file_sys/content_archive.h" | ||
| 5 | #include "core/file_sys/control_metadata.h" | 6 | #include "core/file_sys/control_metadata.h" |
| 6 | #include "core/file_sys/patch_manager.h" | 7 | #include "core/file_sys/patch_manager.h" |
| 7 | #include "core/file_sys/registered_cache.h" | 8 | #include "core/file_sys/registered_cache.h" |
| 9 | #include "core/file_sys/romfs.h" | ||
| 8 | #include "core/hle/service/filesystem/filesystem.h" | 10 | #include "core/hle/service/filesystem/filesystem.h" |
| 11 | #include "core/loader/loader.h" | ||
| 9 | 12 | ||
| 10 | namespace FileSys { | 13 | namespace FileSys { |
| 11 | 14 | ||
diff --git a/src/core/file_sys/patch_manager.h b/src/core/file_sys/patch_manager.h index c2626bc6c..28c7ae136 100644 --- a/src/core/file_sys/patch_manager.h +++ b/src/core/file_sys/patch_manager.h | |||
| @@ -8,7 +8,6 @@ | |||
| 8 | #include <string> | 8 | #include <string> |
| 9 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 10 | #include "core/file_sys/nca_metadata.h" | 10 | #include "core/file_sys/nca_metadata.h" |
| 11 | #include "core/file_sys/romfs_factory.h" | ||
| 12 | #include "core/file_sys/vfs.h" | 11 | #include "core/file_sys/vfs.h" |
| 13 | 12 | ||
| 14 | namespace FileSys { | 13 | namespace FileSys { |
diff --git a/src/core/file_sys/romfs_factory.cpp b/src/core/file_sys/romfs_factory.cpp index 33ec62491..d9d90939e 100644 --- a/src/core/file_sys/romfs_factory.cpp +++ b/src/core/file_sys/romfs_factory.cpp | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include "core/file_sys/patch_manager.h" | 12 | #include "core/file_sys/patch_manager.h" |
| 13 | #include "core/file_sys/registered_cache.h" | 13 | #include "core/file_sys/registered_cache.h" |
| 14 | #include "core/file_sys/romfs_factory.h" | 14 | #include "core/file_sys/romfs_factory.h" |
| 15 | #include "core/hle/kernel/process.h" | ||
| 15 | #include "core/hle/service/filesystem/filesystem.h" | 16 | #include "core/hle/service/filesystem/filesystem.h" |
| 16 | #include "core/loader/loader.h" | 17 | #include "core/loader/loader.h" |
| 17 | 18 | ||