From 736233206ba15cb0e0ca8f4fcedb91ff4a193f21 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sun, 30 Mar 2025 00:33:03 +0300 Subject: WinMM: Prevent possible crash due to array out-of-range --- utils/winmm_drv/cpl/config_dialog.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/winmm_drv/cpl/config_dialog.c b/utils/winmm_drv/cpl/config_dialog.c index a97e958..00fc9d9 100644 --- a/utils/winmm_drv/cpl/config_dialog.c +++ b/utils/winmm_drv/cpl/config_dialog.c @@ -310,6 +310,8 @@ static void warnIfOutChanged(HWND hwnd) INT_PTR CALLBACK ToolDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { + int ret; + switch(Message) { case WM_INITDIALOG: @@ -369,7 +371,9 @@ INT_PTR CALLBACK ToolDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPar case IDC_EMULATOR: if(HIWORD(wParam) == CBN_SELCHANGE) { - g_setup.emulatorId = (int)emulator_type_id[SendMessageW((HWND)lParam, (UINT)CB_GETCURSEL, (WPARAM)0, (LPARAM)0)]; + ret = SendMessageW((HWND)lParam, (UINT)CB_GETCURSEL, (WPARAM)0, (LPARAM)0); + if(ret >= 0 && ret < ADLMIDI_EMU_end) + g_setup.emulatorId = (int)emulator_type_id[ret]; } break; -- cgit v1.2.3