mirror of
https://gitlab.freedesktop.org/xorg/lib/libx11.git
synced 2026-06-15 19:48:41 +02:00
Adding the offset between the realloc result and the old allocation to update pointers into the new allocation is undefined behaviour: the old pointers are no longer valid after realloc() according to the C standard. While this works on almost all architectures and compilers, it causes problems on architectures that track pointer bounds (e.g. CHERI or Arm's Morello): the value_list pointers will still have the bounds of the previous allocation and therefore any dereference will result in a run-time trap. I found this due to a crash (dereferencing an invalid capability) while trying to run `xev` over SSH on a CHERI-RISC-V system. With these two realloc changes, and https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/41 I am able to succesfully run `xev` compiled for CHERI-RISC-V. Signed-off-by: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> |
||
|---|---|---|
| .. | ||
| im | ||
| lc | ||
| om | ||
| Makefile.am | ||