diff options
author | Narr the Reg <juangerman-13@hotmail.com> | 2024-02-02 19:33:42 +0100 |
---|---|---|
committer | Narr the Reg <juangerman-13@hotmail.com> | 2024-02-02 20:25:38 +0100 |
commit | fb3ef957bbb6d674f7482572443a678e6b4a612e (patch) | |
tree | dfc5a8c071884b37f6e917269d48e0ad5ab3484d | |
parent | Merge pull request #12857 from liamwhite/const (diff) | |
download | yuzu-fb3ef957bbb6d674f7482572443a678e6b4a612e.tar yuzu-fb3ef957bbb6d674f7482572443a678e6b4a612e.tar.gz yuzu-fb3ef957bbb6d674f7482572443a678e6b4a612e.tar.bz2 yuzu-fb3ef957bbb6d674f7482572443a678e6b4a612e.tar.lz yuzu-fb3ef957bbb6d674f7482572443a678e6b4a612e.tar.xz yuzu-fb3ef957bbb6d674f7482572443a678e6b4a612e.tar.zst yuzu-fb3ef957bbb6d674f7482572443a678e6b4a612e.zip |
-rw-r--r-- | src/common/hex_util.h | 3 | ||||
-rw-r--r-- | src/core/hle/service/filesystem/fsp/fsp_srv.cpp | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/common/hex_util.h b/src/common/hex_util.h index a00904939..618f53152 100644 --- a/src/common/hex_util.h +++ b/src/common/hex_util.h @@ -9,6 +9,7 @@ #include <string> #include <vector> #include <fmt/format.h> +#include "common/assert.h" #include "common/common_types.h" namespace Common { @@ -29,6 +30,8 @@ namespace Common { template <std::size_t Size, bool le = false> [[nodiscard]] constexpr std::array<u8, Size> HexStringToArray(std::string_view str) { + ASSERT_MSG(Size * 2 <= str.size(), "Invalid string size"); + std::array<u8, Size> out{}; if constexpr (le) { for (std::size_t i = 2 * Size - 2; i <= 2 * Size; i -= 2) { diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp index 5fe534c73..63c2d3a58 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp @@ -115,6 +115,11 @@ private: if (type->GetName() == "save") { for (const auto& save_id : type->GetSubdirectories()) { for (const auto& user_id : save_id->GetSubdirectories()) { + // Skip non user id subdirectories + if (user_id->GetName().size() != 0x20) { + continue; + } + const auto save_id_numeric = stoull_be(save_id->GetName()); auto user_id_numeric = Common::HexStringToArray<0x10>(user_id->GetName()); std::reverse(user_id_numeric.begin(), user_id_numeric.end()); @@ -160,6 +165,10 @@ private: } else if (space == FileSys::SaveDataSpaceId::TemporaryStorage) { // Temporary Storage for (const auto& user_id : type->GetSubdirectories()) { + // Skip non user id subdirectories + if (user_id->GetName().size() != 0x20) { + continue; + } for (const auto& title_id : user_id->GetSubdirectories()) { if (!title_id->GetFiles().empty() || !title_id->GetSubdirectories().empty()) { |