diff options
| author | Zach Hilman <zachhilman@gmail.com> | 2018-10-19 18:37:58 -0400 |
|---|---|---|
| committer | Zach Hilman <zachhilman@gmail.com> | 2018-10-19 18:37:58 -0400 |
| commit | 224167709224299104bc3faddc49af847ff19043 (patch) | |
| tree | 25fa10971f64d8e18a5c712e22789aefab6bb26e /src/core/crypto/partition_data_manager.cpp | |
| parent | 30185be61a78a5f909d4652ee386b1ccc5c0a6fb (diff) | |
crypto: Use compressed sizes in offset calculation for KIP decompression
Fixes a fatal crash on start when deriving keys.
Diffstat (limited to 'src/core/crypto/partition_data_manager.cpp')
| -rw-r--r-- | src/core/crypto/partition_data_manager.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/core/crypto/partition_data_manager.cpp b/src/core/crypto/partition_data_manager.cpp index 25cee1f3a3..ed07754447 100644 --- a/src/core/crypto/partition_data_manager.cpp +++ b/src/core/crypto/partition_data_manager.cpp @@ -516,7 +516,8 @@ void PartitionDataManager::DecryptPackage2(const std::array<Key128, 0x20>& packa out.insert(out.end(), rodata.begin(), rodata.end()); out.insert(out.end(), data.begin(), data.end()); - offset += sizeof(KIPHeader) + out.size(); + offset += sizeof(KIPHeader) + kip.sections[0].size_compressed + + kip.sections[1].size_compressed + kip.sections[2].size_compressed; if (name == "FS") package2_fs[static_cast<size_t>(type)] = std::move(out); |
