aboutsummaryrefslogtreecommitdiff
path: root/utils/winmm_drv
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2025-03-30 00:33:03 +0300
committerWohlstand <admin@wohlnet.ru>2025-03-30 00:33:03 +0300
commit736233206ba15cb0e0ca8f4fcedb91ff4a193f21 (patch)
tree1a4cc2f6e15dfed394f030e45e39ce468f1dc72a /utils/winmm_drv
parenta37298e7bed28752e8dcbe8e37e355fe47bf5e99 (diff)
downloadlibADLMIDI-736233206ba15cb0e0ca8f4fcedb91ff4a193f21.tar.gz
libADLMIDI-736233206ba15cb0e0ca8f4fcedb91ff4a193f21.tar.bz2
libADLMIDI-736233206ba15cb0e0ca8f4fcedb91ff4a193f21.zip
WinMM: Prevent possible crash due to array out-of-range
Diffstat (limited to 'utils/winmm_drv')
-rw-r--r--utils/winmm_drv/cpl/config_dialog.c6
1 files changed, 5 insertions, 1 deletions
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;