xserver/randr
Peter Hutterer 58e83c6839 randr: avoid integer truncation in length check of ProcRRChange*Property
Affected are ProcRRChangeProviderProperty and ProcRRChangeOutputProperty.
See also xserver@8f454b79 where this same bug was fixed for the core
protocol and XI.

This fixes an OOB read and the resulting information disclosure.

Length calculation for the request was clipped to a 32-bit integer. With
the correct stuff->nUnits value the expected request size was
truncated, passing the REQUEST_FIXED_SIZE check.

The server then proceeded with reading at least stuff->num_items bytes
(depending on stuff->format) from the request and stuffing whatever it
finds into the property. In the process it would also allocate at least
stuff->nUnits bytes, i.e. 4GB.

CVE-2023-6478, ZDI-CAN-22561

This vulnerability was discovered by:
Jan-Niklas Sohn working with Trend Micro Zero Day Initiative

(cherry picked from commit 14f480010a)
2023-12-13 11:00:13 +10:00
..
Makefile.am Add RandR leases with modesetting driver support [v6] 2018-02-27 12:39:50 -05:00
meson.build meson: hide C API if Xorg is disabled (like autotools) 2021-03-11 00:22:36 +00:00
randr.c present: fallback get_crtc to return crtc belonging to screen with present extension 2021-07-20 08:10:46 +02:00
randrstr.h present: fallback get_crtc to return crtc belonging to screen with present extension 2021-07-20 08:10:46 +02:00
rrcrtc.c present: fix msc offset calculation in screen mode 2021-04-16 10:53:43 +00:00
rrdispatch.c Add RandR leases with modesetting driver support [v6] 2018-02-27 12:39:50 -05:00
rrinfo.c Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
rrlease.c Fix RandR leasing for more than 1 simultaneously active lease. 2021-10-21 13:08:01 +03:00
rrmode.c Add RandR leases with modesetting driver support [v6] 2018-02-27 12:39:50 -05:00
rrmonitor.c xserver/output: rename some badly named variables/APIs. 2020-07-10 06:17:44 +10:00
rroutput.c xserver/output: rename some badly named variables/APIs. 2020-07-10 06:17:44 +10:00
rrpointer.c randr: Fix logic in RRPointerToNearestCrtc 2014-07-30 14:40:17 -07:00
rrproperty.c randr: avoid integer truncation in length check of ProcRRChange*Property 2023-12-13 11:00:13 +10:00
rrprovider.c present: fix msc offset calculation in screen mode 2021-04-16 10:53:43 +00:00
rrproviderproperty.c randr: avoid integer truncation in length check of ProcRRChange*Property 2023-12-13 11:00:13 +10:00
rrscreen.c xserver/output: rename some badly named variables/APIs. 2020-07-10 06:17:44 +10:00
rrsdispatch.c Add RandR leases with modesetting driver support [v6] 2018-02-27 12:39:50 -05:00
rrtransform.c randr: Silence -Wshift-negative-value warnings 2015-10-19 11:51:52 -04:00
rrtransform.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
rrxinerama.c dispatch: Mark swapped dispatch as _X_COLD 2017-03-01 10:16:20 -05:00