From e025b8c805f1948af3fda486d083b92cfdb2b87c Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 24 Feb 2025 13:51:40 +0100 Subject: [PATCH] dix: protect from allocation failure Signed-off-by: Enrico Weigelt, metux IT consult --- dix/devices.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/dix/devices.c b/dix/devices.c index 50941f2e7..9791fb982 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -284,7 +284,10 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart) dev->deviceGrab.grabTime = currentTime; dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab; dev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab; - dev->deviceGrab.sync.event = calloc(1, sizeof(InternalEvent)); + if (!(dev->deviceGrab.sync.event = calloc(1, sizeof(InternalEvent)))) { + free(dev); + return NULL; + } dev->sendEventsProc = XTestDeviceSendEvents; @@ -1692,7 +1695,8 @@ InitTouchClassDeviceStruct(DeviceIntPtr device, unsigned int max_touches, touch->sourceid = device->id; device->touch = touch; - device->last.touches = calloc(max_touches, sizeof(*device->last.touches)); + if (!(device->last.touches = calloc(max_touches, sizeof(*device->last.touches)))) + goto err; device->last.num_touches = touch->num_touches; for (i = 0; i < touch->num_touches; i++) TouchInitDDXTouchPoint(device, &device->last.touches[i]); @@ -2907,6 +2911,11 @@ AllocDevicePair(ClientPtr client, const char *name, if (InputDevIsMaster(pointer)) { pointer->unused_classes = calloc(1, sizeof(ClassesRec)); keyboard->unused_classes = calloc(1, sizeof(ClassesRec)); + if (!pointer->unused_classes || !keyboard->unused_classes) { + free(keyboard->unused_classes); + free(pointer->unused_classes); + return BadAlloc; + } } *ptr = pointer;