mirror of
https://github.com/X11Libre/xserver.git
synced 2026-10-31 02:50:00 +00:00
| Filename | Latest commit message | Latest commit date |
|---|---|---|
ProcXFixesSetCursorName() and ProcXFixesChangeCursorByName() called REQUEST_FIXED_SIZE(..., stuff->nbytes) while stuff->nbytes was still in wire byte order for a swapped client; the swaps(&stuff->nbytes) happened afterwards. MakeAtom() then used the host-order (swapped) value. A byte-swapped client could choose a wire-order nbytes that passes the length check (e.g. 0x0001) whose swapped value is large (0x0100), making MakeAtom() read several hundred bytes past the end of the request buffer and fold that adjacent heap memory into the atom table (disclosed via GetCursorName) or crash the server. Swap nbytes before REQUEST_FIXED_SIZE so the validated value is the one MakeAtom() consumes. This restores the ordering that existed before the request swapping was inlined into the Proc handlers (commit |
||
| .. | ||
| cursor.c | ||
| disconnect.c | ||
| meson.build | ||
| region.c | ||
| saveset.c | ||
| select.c | ||
| xfixes.c | ||
| xfixes.h | ||
| xfixesint.h | ||