xserver/hw
Jessica Clarke bfe8f54924 xwayland: Stop relying on event_id being a valid pointer
On traditional 32-bit and 64-bit architectures, uint64_t can be abused
to hold a uintptr_t and be cast back to a valid pointer. However, on
CHERI, and thus Arm's Morello prototype, pointers are capabilities,
which contain a traditional address alongside additional metadata,
including a tag bit that ensures it cannot be forged (the only way to
get a capability with the tag bit set is by using instructions that take
in another valid capability with sufficient bounds/permissions/etc for
the request, and any other operation, like overwriting individual bytes
in memory, will give a capability whose tag is clear). Casting a pointer
to a uintptr_t is fine as uintptr_t is represented as a capability, but
casting to a uint64_t yields just the address, losing the metadata and
tag. Thus, when cast back to a uintptr_t, the capability remains invalid
and faults on any attempt to dereference.

As with various other places in the tree, address this by searching for
the pointer in a list so that we no longer rely on this undefined
behaviour.

Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
2023-06-06 07:19:12 +00:00
..
kdrive Xephyr: fix tiny memleak in KdParseKeyboard(). 2023-05-12 18:30:24 +09:00
vfb Remove autotools support 2021-10-27 13:15:40 +03:00
xfree86 modesetting: Support accurate DRI presentation timing with TearFree 2023-02-28 22:43:37 -08:00
xnest Replace "the the" with a single "the" in docs & comments 2022-03-31 13:27:57 -07:00
xquartz xquartz: Disable COMPOSITE at runtime 2023-01-17 15:17:45 -08:00
xwayland xwayland: Stop relying on event_id being a valid pointer 2023-06-06 07:19:12 +00:00
xwin gen_gl_wrappers: remove unused imports 2022-04-02 18:06:30 +00:00
meson.build Drop DMX DDX 2021-09-07 09:34:31 +00:00