38 lines
1.3 KiB
Diff
38 lines
1.3 KiB
Diff
From df3c65706eb169d5938df0052059f3e0d5981b74 Mon Sep 17 00:00:00 2001
|
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Date: Thu, 21 Dec 2023 13:48:10 +1000
|
|
Subject: [PATCH 4/9] Xi: when creating a new ButtonClass, set the number of
|
|
buttons
|
|
|
|
There's a racy sequence where a master device may copy the button class
|
|
from the slave, without ever initializing numButtons. This leads to a
|
|
device with zero buttons but a button class which is invalid.
|
|
|
|
Let's copy the numButtons value from the source - by definition if we
|
|
don't have a button class yet we do not have any other slave devices
|
|
with more than this number of buttons anyway.
|
|
|
|
CVE-2024-0229, ZDI-CAN-22678
|
|
|
|
This vulnerability was discovered by:
|
|
Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
|
|
---
|
|
Xi/exevents.c | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/Xi/exevents.c b/Xi/exevents.c
|
|
index 54ea11a93..e16171468 100644
|
|
--- a/Xi/exevents.c
|
|
+++ b/Xi/exevents.c
|
|
@@ -605,6 +605,7 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to)
|
|
to->button = calloc(1, sizeof(ButtonClassRec));
|
|
if (!to->button)
|
|
FatalError("[Xi] no memory for class shift.\n");
|
|
+ to->button->numButtons = from->button->numButtons;
|
|
}
|
|
else
|
|
classes->button = NULL;
|
|
--
|
|
2.43.0
|
|
|