sway/sway
Dominique Martinet 08800c8ee2 layer_shell: cleanup output link on output destroy
Fixes this kind of use-after-free:
==1795==ERROR: AddressSanitizer: heap-use-after-free on address 0x612000191ef0 at pc 0x00000048c388 bp 0x7ffe308f0410 sp 0x7ffe308f0400
WRITE of size 8 at 0x612000191ef0 thread T0
    #0 0x48c387 in wl_list_remove ../common/list.c:157
    #1 0x42196b in handle_destroy ../sway/desktop/layer_shell.c:275
    #2 0x7f55cc2549fa in wlr_signal_emit_safe ../util/signal.c:29
    #3 0x7f55cc22cf68 in layer_surface_destroy ../types/wlr_layer_shell.c:182
    #4 0x7f55cc22d084 in layer_surface_resource_destroy ../types/wlr_layer_shell.c:196
    #5 0x7f55cc4ca025 in destroy_resource src/wayland-server.c:688
    #6 0x7f55cc4ca091 in wl_resource_destroy src/wayland-server.c:705
    #7 0x7f55cc22c3a2 in resource_handle_destroy ../types/wlr_layer_shell.c:18
    #8 0x7f55c8ef103d in ffi_call_unix64 (/lib64/libffi.so.6+0x603d)
    #9 0x7f55c8ef09fe in ffi_call (/lib64/libffi.so.6+0x59fe)
    #10 0x7f55cc4cdf2c  (/lib64/libwayland-server.so.0+0xbf2c)
    #11 0x7f55cc4ca3de in wl_client_connection_data src/wayland-server.c:420
    #12 0x7f55cc4cbf01 in wl_event_loop_dispatch src/event-loop.c:641
    #13 0x7f55cc4ca601 in wl_display_run src/wayland-server.c:1260
    #14 0x40bb1e in server_run ../sway/server.c:141
    #15 0x40ab2f in main ../sway/main.c:432
    #16 0x7f55cb97318a in __libc_start_main ../csu/libc-start.c:308
    #17 0x408d29 in _start (/opt/wayland/bin/sway+0x408d29)

0x612000191ef0 is located 48 bytes inside of 312-byte region [0x612000191ec0,0x612000191ff8)
freed by thread T0 here:
    #0 0x7f55ce3bb880 in __interceptor_free (/lib64/libasan.so.5+0xee880)
    #1 0x42f1db in handle_destroy ../sway/desktop/output.c:1275
    #2 0x7f55cc2549fa in wlr_signal_emit_safe ../util/signal.c:29
    #3 0x7f55cc23b4c2 in wlr_output_destroy ../types/wlr_output.c:284
    #4 0x7f55cc1ddc20 in xdg_toplevel_handle_close ../backend/wayland/output.c:235
    #5 0x7f55c8ef103d in ffi_call_unix64 (/lib64/libffi.so.6+0x603d)

previously allocated by thread T0 here:
    #0 0x7f55ce3bbe50 in calloc (/lib64/libasan.so.5+0xeee50)
    #1 0x42f401 in handle_new_output ../sway/desktop/output.c:1308
    #2 0x7f55cc2549fa in wlr_signal_emit_safe ../util/signal.c:29
    #3 0x7f55cc1d6cbf in new_output_reemit ../backend/multi/backend.c:113
    #4 0x7f55cc2549fa in wlr_signal_emit_safe ../util/signal.c:29
    #5 0x7f55cc1deac7 in wlr_wl_output_create ../backend/wayland/output.c:327
    #6 0x7f55cc1db353 in backend_start ../backend/wayland/backend.c:55
    #7 0x7f55cc1bad55 in wlr_backend_start ../backend/backend.c:35
    #8 0x7f55cc1d67a0 in multi_backend_start ../backend/multi/backend.c:24
    #9 0x7f55cc1bad55 in wlr_backend_start ../backend/backend.c:35
    #10 0x40ba8a in server_run ../sway/server.c:136
    #11 0x40ab2f in main ../sway/main.c:432
    #12 0x7f55cb97318a in __libc_start_main ../csu/libc-start.c:308
2018-06-26 21:20:56 +09:00
..
commands bugfix: avoid access after free 2018-06-22 15:41:44 +02:00
config Store sway_outputs so that they can be reenabled 2018-06-06 20:11:24 -04:00
desktop layer_shell: cleanup output link on output destroy 2018-06-26 21:20:56 +09:00
input dont focus-follow-mouse when keyboard grab 2018-06-24 20:30:43 -04:00
tree Merge pull request #2124 from emersion/drag-icons 2018-06-09 10:50:34 -07:00
base64.c Rework get_clipboard implementation 2017-07-07 21:51:34 +02:00
commands.c Implement gaps (PR #2047) 2018-06-09 09:34:56 -04:00
config.c Remove strip quoting and fix strncpy-overlap 2018-06-07 20:37:08 -04:00
criteria.c sway/criteria: gcc string truncation warning fix 2018-06-08 22:30:13 +09:00
debug-tree.c Add L_FLOATING back to debug tree 2018-06-01 23:14:58 +10:00
ipc-json.c Fix compilation errors related to disabled outputs 2018-06-09 11:38:16 +01:00
ipc-server.c Switch output storing from list_t to wl_list 2018-06-06 20:11:24 -04:00
main.c Perform (partial) server initialization before dropping privileges. 2018-06-19 00:19:57 +02:00
meson.build Implement gaps (PR #2047) 2018-06-09 09:34:56 -04:00
security.c Add minimal config subsystem 2017-12-05 10:40:55 +01:00
server.c Merge pull request #2146 from tobiasblass/prepare_server_before_dropping_privileges 2018-06-22 06:41:34 -07:00
sway-bar.5.scd Add sway-bar(5) 2018-05-11 21:13:43 -04:00
sway-input.5.scd Add sway-input(5) 2018-05-11 21:25:05 -04:00
sway.1.scd Add sway(5) 2018-05-11 21:03:43 -04:00
sway.5.scd Support i3's legacy force_focus_wrapping command 2018-05-28 11:09:46 -04:00