Skip to content

Commit d89febb

Browse files
committed
LVGL: Fix OOB reads of mouse events
Signed-off-by: falkTX <falktx@falktx.com>
1 parent b7ce2ab commit d89febb

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

generic/LVGL.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,14 +329,14 @@ struct LVGLWidget<BaseWidget>::PrivateData {
329329
PrivateData* const evthis = static_cast<PrivateData*>(lv_indev_get_driver_data(indev));
330330

331331
data->point = evthis->mousePos;
332-
data->state = evthis->mouseButtons[kMouseButtonLeft] ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
332+
data->state = evthis->mouseButtons[kMouseButtonLeft - 1] ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
333333
}
334334

335335
static void indev_mousewheel_read_cb(lv_indev_t* const indev, lv_indev_data_t* const data)
336336
{
337337
PrivateData* const evthis = static_cast<PrivateData*>(lv_indev_get_driver_data(indev));
338338

339-
data->state = evthis->mouseButtons[kMouseButtonMiddle] ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
339+
data->state = evthis->mouseButtons[kMouseButtonMiddle - 1] ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
340340
data->enc_diff = evthis->mouseWheelDelta;
341341
evthis->mouseWheelDelta = 0.0;
342342
}
@@ -606,10 +606,10 @@ bool LVGLWidget<BaseWidget>::onMouse(const Widget::MouseEvent& event)
606606
if (BaseWidget::onMouse(event))
607607
return true;
608608

609-
if (event.button > ARRAY_SIZE(lvglData->mouseButtons))
609+
if (event.button == 0 || event.button > ARRAY_SIZE(lvglData->mouseButtons))
610610
return false;
611611

612-
lvglData->mouseButtons[event.button] = event.press;
612+
lvglData->mouseButtons[event.button - 1] = event.press;
613613
return true;
614614
}
615615

@@ -622,10 +622,10 @@ bool LVGLWidget<SubWidget>::onMouse(const Widget::MouseEvent& event)
622622
if (!getAbsoluteArea().contains(event.absolutePos))
623623
return false;
624624

625-
if (event.button > ARRAY_SIZE(lvglData->mouseButtons))
625+
if (event.button == 0 || event.button > ARRAY_SIZE(lvglData->mouseButtons))
626626
return false;
627627

628-
lvglData->mouseButtons[event.button] = event.press;
628+
lvglData->mouseButtons[event.button - 1] = event.press;
629629
return true;
630630
}
631631

0 commit comments

Comments
 (0)