diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2022-03-27 17:06:27 -0400 |
---|---|---|
committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2022-03-27 17:06:27 -0400 |
commit | ea7a0d4652692eb0cd78c721b809d7e0e2563def (patch) | |
tree | b53945be4101da3b7a1fad8a0ee0f32aec3d6b6e /src | |
parent | 7382e7a5c811ec8ed4270818dcfe8bba357973b2 (diff) |
registered_cache: Prevent nullptr dereference when accumulating files
For whatever reason, nca_file/dir can be nullptr in the list of files/dirs. I have not determined the cause of this yet, so add a nullptr check for these prior to dereferencing them.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/file_sys/registered_cache.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/core/file_sys/registered_cache.cpp b/src/core/file_sys/registered_cache.cpp index 7a646b5f1..4ada4a69b 100644 --- a/src/core/file_sys/registered_cache.cpp +++ b/src/core/file_sys/registered_cache.cpp @@ -387,15 +387,17 @@ std::vector<NcaID> RegisteredCache::AccumulateFiles() const { continue; for (const auto& nca_dir : d2_dir->GetSubdirectories()) { - if (!FollowsNcaIdFormat(nca_dir->GetName())) + if (nca_dir == nullptr || !FollowsNcaIdFormat(nca_dir->GetName())) { continue; + } ids.push_back(Common::HexStringToArray<0x10, true>(nca_dir->GetName().substr(0, 0x20))); } for (const auto& nca_file : d2_dir->GetFiles()) { - if (!FollowsNcaIdFormat(nca_file->GetName())) + if (nca_file == nullptr || !FollowsNcaIdFormat(nca_file->GetName())) { continue; + } ids.push_back( Common::HexStringToArray<0x10, true>(nca_file->GetName().substr(0, 0x20))); |