wlroots/types
Alexander Orzechowski 00dcc68e16 cursor: Unset cursor image when there is not available xcursor theme
This fixes a crash in the case where the last cursor was a client surface
cursor but then transitioned into a server managed xcursor that isn't
available. Because the logic would return early before, we would continue
to reference a texture pointer belonging to a client surface but would
otherwise disassociate with it (we wouldn't clear the cursor if the surface
is destroyed) resulting an an eventual UAF.

Let's just make the cursor invisible if we don't know what to show. It's
compositor policy if they want to show a default.

Co-authored-by: Scott Moreau <oreaus@gmail.com>
Fixes: #3686
2023-10-02 06:08:10 +00:00
..
buffer Use wl_container_of() instead of casts 2023-07-11 20:16:17 +02:00
data_device Use wl_container_of() instead of casts 2023-07-11 20:16:17 +02:00
output backend/drm: Add async page flip support to legacy 2023-09-28 16:53:08 +00:00
scene wlr_scene: Use cached node coordinates where possible 2023-09-08 21:11:19 +00:00
seat compositor: introduce wlr_surface_set_role_object() 2023-06-23 11:54:05 +00:00
tablet_v2 compositor: introduce wlr_surface_set_role_object() 2023-06-23 11:54:05 +00:00
xdg_shell xdg-popup: validate parent 2023-09-01 12:48:36 +03:00
meson.build staging/tearing-control: Add protocol support 2023-09-28 16:53:08 +00:00
wlr_compositor.c compositor: drop wlr_surface_destroy_role_object() 2023-08-21 18:56:09 +02:00
wlr_content_type_v1.c content-type-v1: add version param to wlr_content_type_manager_v1_create() 2022-11-15 16:43:04 +01:00
wlr_cursor_shape_v1.c cursor-shape-v1: new protocol implementation 2023-07-24 01:00:19 +00:00
wlr_cursor.c cursor: Unset cursor image when there is not available xcursor theme 2023-10-02 06:08:10 +00:00
wlr_damage_ring.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_data_control_v1.c Use wl_container_of() instead of casts 2023-07-11 20:16:17 +02:00
wlr_drm_lease_v1.c types/wlr_drm_lease_v1: downgrade DRM backend error message to debug 2023-07-27 22:14:46 -04:00
wlr_drm.c Use wl_container_of() instead of casts 2023-07-11 20:16:17 +02:00
wlr_export_dmabuf_v1.c export-dmabuf, screencopy: schedule_frame -> needs_frame 2023-07-18 12:01:16 +01:00
wlr_foreign_toplevel_management_v1.c foreign-toplevel-management: fix indentation 2022-10-01 19:57:32 +00:00
wlr_fractional_scale_v1.c wp-fractional-scale-v1: new protocol implementation 2023-02-08 16:31:39 +01:00
wlr_fullscreen_shell_v1.c fullscreen-shell: set surface role 2023-06-23 22:09:54 +03:00
wlr_gamma_control_v1.c gamma-control-v1: stop applying gamma LUTs implicitly 2023-06-08 18:47:46 +00:00
wlr_idle_inhibit_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_idle_notify_v1.c idle-notify-v1: new protocol implementation 2022-10-14 13:36:15 +00:00
wlr_idle.c wlr_idle: Handle inert seats 2023-06-03 10:43:12 +00:00
wlr_input_device.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_input_inhibitor.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_input_method_v2.c Unmap wlr_surface before making its role object inert 2023-07-26 20:39:03 +00:00
wlr_keyboard_group.c Use wl_container_of() instead of casts 2023-07-11 20:16:17 +02:00
wlr_keyboard_shortcuts_inhibit_v1.c keyboard-shortcuts-inhibit: Handle inert seats 2023-06-03 10:43:12 +00:00
wlr_keyboard.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_layer_shell_v1.c Unmap wlr_surface before making its role object inert 2023-07-26 20:39:03 +00:00
wlr_linux_dmabuf_v1.c Avoid using memcpy() to copy structs 2023-08-03 14:40:28 +00:00
wlr_matrix.c matrix: remove wlr_matrix_projection() 2022-06-08 19:27:36 +00:00
wlr_output_layer.c output-layer: add feedback event 2023-02-20 18:38:57 +01:00
wlr_output_layout.c output_layout: return wlr_output_layout_output when adding output 2023-08-22 11:53:25 +02:00
wlr_output_management_v1.c wlr-output-management: implement adaptive sync 2022-10-24 16:19:25 +00:00
wlr_output_power_management_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_pointer_constraints_v1.c region: constify 2022-11-11 23:11:17 +00:00
wlr_pointer_gestures_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_pointer.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_presentation_time.c presentation-time: add separate helper for zero-copy 2023-07-14 15:20:35 +02:00
wlr_primary_selection_v1.c Use wl_container_of() instead of casts 2023-07-11 20:16:17 +02:00
wlr_primary_selection.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_region.c region: constify 2022-11-11 23:11:17 +00:00
wlr_relative_pointer_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_screencopy_v1.c screencopy_v1: only bind, not render with, buffer in shm copy path 2023-09-11 20:25:07 -04:00
wlr_server_decoration.c Fix possible crash in server-decoration when surface destroyed 2023-09-27 23:54:51 -07:00
wlr_session_lock_v1.c Unmap wlr_surface before making its role object inert 2023-07-26 20:39:03 +00:00
wlr_shm.c shm: add create() function without a wlr_renderer 2022-11-25 15:16:42 +00:00
wlr_single_pixel_buffer_v1.c single-pixel-buffer-v1: new protocol implementation 2022-08-03 10:35:23 +00:00
wlr_subcompositor.c Unmap wlr_surface before making its role object inert 2023-07-26 20:39:03 +00:00
wlr_switch.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_tablet_pad.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_tablet_tool.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_tearing_control_v1.c types/wlr_tearing_control_v1: use safe list iteration on destroy 2023-10-01 20:41:22 -04:00
wlr_text_input_v3.c text-input: Handle inert seats 2023-06-03 10:43:12 +00:00
wlr_touch.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_viewporter.c viewporter: check for an existing viewport 2023-07-07 12:49:06 +03:00
wlr_virtual_keyboard_v1.c virtual-keyboard: Handle inert seats 2023-06-03 10:43:12 +00:00
wlr_virtual_pointer_v1.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_xcursor_manager.c xcursor-manager: drop wlr_xcursor_manager_set_cursor_image() 2023-07-02 22:42:37 +00:00
wlr_xdg_activation_v1.c xdg-activation: accept pointer focus for new tokens 2023-02-06 15:52:02 +01:00
wlr_xdg_decoration_v1.c xdg-decoration: store an xdg_toplevel instead of xdg_surface 2023-08-19 11:10:36 -06:00
wlr_xdg_foreign_registry.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_xdg_foreign_v1.c xdg-shell: use unified map logic 2023-06-02 17:26:18 +00:00
wlr_xdg_foreign_v2.c xdg-shell: use unified map logic 2023-06-02 17:26:18 +00:00
wlr_xdg_output_v1.c types/wlr_xdg_output_v1: Fix wl_output.done bug. 2022-08-19 14:22:23 +00:00