diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-02-08 16:09:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-08 16:09:26 +0100 |
commit | f6477b91f9abe4ad4b4101f9f80ddb3412462a5d (patch) | |
tree | f7fcacd7425bc75629ae8dffc7df708d54d4adb0 /src/core/hle/service/hid/controllers/npad.cpp | |
parent | Merge pull request #9739 from liamwhite/old-gcc-fix (diff) | |
parent | service: hid: Return error if arguments of SetSupportedNpadIdType is invalid (diff) | |
download | yuzu-f6477b91f9abe4ad4b4101f9f80ddb3412462a5d.tar yuzu-f6477b91f9abe4ad4b4101f9f80ddb3412462a5d.tar.gz yuzu-f6477b91f9abe4ad4b4101f9f80ddb3412462a5d.tar.bz2 yuzu-f6477b91f9abe4ad4b4101f9f80ddb3412462a5d.tar.lz yuzu-f6477b91f9abe4ad4b4101f9f80ddb3412462a5d.tar.xz yuzu-f6477b91f9abe4ad4b4101f9f80ddb3412462a5d.tar.zst yuzu-f6477b91f9abe4ad4b4101f9f80ddb3412462a5d.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index 513ea485a..80eba22e8 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp @@ -758,12 +758,20 @@ Core::HID::NpadStyleTag Controller_NPad::GetSupportedStyleSet() const { return hid_core.GetSupportedStyleTag(); } -void Controller_NPad::SetSupportedNpadIdTypes(std::span<const u8> data) { +Result Controller_NPad::SetSupportedNpadIdTypes(std::span<const u8> data) { + constexpr std::size_t max_number_npad_ids = 0xa; const auto length = data.size(); ASSERT(length > 0 && (length % sizeof(u32)) == 0); + const std::size_t elements = length / sizeof(u32); + + if (elements > max_number_npad_ids) { + return InvalidArraySize; + } + supported_npad_id_types.clear(); - supported_npad_id_types.resize(length / sizeof(u32)); + supported_npad_id_types.resize(elements); std::memcpy(supported_npad_id_types.data(), data.data(), length); + return ResultSuccess; } void Controller_NPad::GetSupportedNpadIdTypes(u32* data, std::size_t max_length) { |