From 0f38ec8a3d5cb10a7c6032f351cd94f7b7672062 Mon Sep 17 00:00:00 2001 From: yellows8 Date: Thu, 3 Dec 2020 18:03:32 -0500 Subject: [PATCH] hidbus: Adjusted out-of-bounds size handling. --- nx/source/services/hidbus.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nx/source/services/hidbus.c b/nx/source/services/hidbus.c index d8b9170a..86f21364 100644 --- a/nx/source/services/hidbus.c +++ b/nx/source/services/hidbus.c @@ -546,21 +546,21 @@ Result hidbusGetJoyPollingReceivedData(HidbusBusHandle handle, HidbusJoyPollingR if (polling_mode == HidbusJoyPollingMode_SixAxisSensorDisable) { size = tmp_entries.joydisable[i].out_size; - if (size > sizeof(tmp_entries.joydisable[i].data)) return MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen); + if (size > sizeof(tmp_entries.joydisable[i].data)) size = sizeof(tmp_entries.joydisable[i].data); memcpy(recv_data[i].data, tmp_entries.joydisable[i].data, size); recv_data[i].out_size = size; recv_data[i].sampling_number = tmp_entries.joydisable[i].sampling_number; } else if (polling_mode == HidbusJoyPollingMode_SixAxisSensorEnable) { size = tmp_entries.joyenable[i].out_size; - if (size > sizeof(tmp_entries.joyenable[i].data)) return MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen); + if (size > sizeof(tmp_entries.joyenable[i].data)) size = sizeof(tmp_entries.joyenable[i].data); memcpy(recv_data[i].data, tmp_entries.joyenable[i].data, size); recv_data[i].out_size = size; recv_data[i].sampling_number = tmp_entries.joyenable[i].sampling_number; } else if (hosversionAtLeast(6,0,0) && polling_mode == HidbusJoyPollingMode_ButtonOnly) { size = tmp_entries.joybutton[i].out_size; - if (size > sizeof(tmp_entries.joybutton[i].data)) return MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen); + if (size > sizeof(tmp_entries.joybutton[i].data)) size = sizeof(tmp_entries.joybutton[i].data); memcpy(recv_data[i].data, tmp_entries.joybutton[i].data, size); recv_data[i].out_size = size; recv_data[i].sampling_number = tmp_entries.joybutton[i].sampling_number;