From f397039d654e7ac8e0da19ab7ab86a0ee701472f Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 12 Jun 2025 23:31:20 +0200 Subject: [PATCH] xres/xkb/xvmc/modesetting: Fix incorrect pointer data size usage * xled change tested with `xset led named "Scroll Lock"` * modesetting change tested with `xrandr --output DP-1 --gamma 0.5:0.5:0.5`. Without this fix that command does nothing * xvmc change tested with `mpv --vo=xv video.mp4` Of the currently reported issues this fixes #104 Signed-off-by: dec05eba --- Xext/xres.c | 2 +- Xext/xvmc.c | 2 +- hw/xfree86/drivers/modesetting/drmmode_display.c | 2 +- xkb/xkbLEDs.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Xext/xres.c b/Xext/xres.c index 8f1b0de39..9c7df9832 100644 --- a/Xext/xres.c +++ b/Xext/xres.c @@ -341,7 +341,7 @@ ProcXResQueryClientResources(ClientPtr client) free(counts); WriteToClient(client, sizeof(xXResQueryClientResourcesReply), &rep); - WriteToClient(client, sizeof(scratch), scratch); + WriteToClient(client, num_types * sizeof(xXResType), scratch); free(scratch); return Success; } diff --git a/Xext/xvmc.c b/Xext/xvmc.c index 989b604c0..935b2d8cb 100644 --- a/Xext/xvmc.c +++ b/Xext/xvmc.c @@ -594,7 +594,7 @@ ProcXvMCListSubpictureTypes(ClientPtr client) .type = X_Reply, .sequenceNumber = client->sequence, .num = num, - .length = bytes_to_int32(sizeof(info)), + .length = bytes_to_int32(num * sizeof(xvImageFormatInfo)), }; WriteToClient(client, sizeof(xvmcListSubpictureTypesReply), &rep); diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c index 80b578b1e..f28c3596b 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c @@ -1927,7 +1927,7 @@ drmmode_set_gamma_lut(drmmode_crtc_private_ptr drmmode_crtc, } uint32_t blob_id; - if (drmModeCreatePropertyBlob(drmmode->fd, lut, sizeof(lut), &blob_id)) { + if (drmModeCreatePropertyBlob(drmmode->fd, lut, size * sizeof(struct drm_color_lut), &blob_id)) { free(lut); return; } diff --git a/xkb/xkbLEDs.c b/xkb/xkbLEDs.c index 500016e9d..4941c83eb 100644 --- a/xkb/xkbLEDs.c +++ b/xkb/xkbLEDs.c @@ -806,7 +806,7 @@ XkbFlushLedEvents(DeviceIntPtr dev, XkbDDXUpdateDeviceIndicators(dev, sli, sli->effectiveState); XkbSendExtensionDeviceNotify(dev, cause->client, ed); } - memset((char *) ed, 0, sizeof(XkbExtensionDeviceNotify)); + memset((char *) ed, 0, sizeof(xkbExtensionDeviceNotify)); } return; }