mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-22 23:27:52 -05:00
service: hid: Return error if arguments of SetSupportedNpadIdType is invalid
This commit is contained in:
@ -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) {
|
||||
|
@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user