service: hid: Return error if arguments of SetSupportedNpadIdType is invalid

This commit is contained in:
Narr the Reg
2023-02-07 21:10:15 -06:00
parent 1f3e8d633a
commit c27006e99d
4 changed files with 15 additions and 6 deletions

View File

@ -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) {

View File

@ -96,7 +96,7 @@ public:
void SetSupportedStyleSet(Core::HID::NpadStyleTag style_set);
Core::HID::NpadStyleTag GetSupportedStyleSet() const;
void SetSupportedNpadIdTypes(std::span<const u8> data);
Result SetSupportedNpadIdTypes(std::span<const u8> data);
void GetSupportedNpadIdTypes(u32* data, std::size_t max_length);
std::size_t GetSupportedNpadIdTypesSize() const;