summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMat M <mathew1800@gmail.com>2018-10-19 18:39:00 -0400
committerGitHub <noreply@github.com>2018-10-19 18:39:00 -0400
commitc91be25b93bd7bfa7e074abf7cf5ad1b6b0850ab (patch)
tree25fa10971f64d8e18a5c712e22789aefab6bb26e
parent12401a0d8774ab73d1195507a12d777a81b97029 (diff)
parent0aef2b9c26fddf40b5f5283ba846f3415c5a65a1 (diff)
Merge pull request #1529 from DarkLordZach/key-derivation-crash
crypto: Use compressed sizes in offset calculation for KIP decompression
-rw-r--r--src/core/crypto/partition_data_manager.cpp3
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 25cee1f3a..ed0775444 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);