aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2018-06-26fix memleak on background cmd errorael-code-2/+5
- src must be free after join_args() - wordfree must bee used after wordexp
2018-06-26Merge pull request #2163 from martinetd/use-after-freeRyan Dwyer-4/+12
layer shell: fix some use after free on destroy
2018-06-26layer_shell: order destroying before sway_outputDominique Martinet-4/+10
Both sway_output and sway_layer_shell listen to wlr's output destroy event, but sway_layer_shell needs to access into sway_output's data strucure and needs to be destroyed first. Resolve this by making sway_layer_shell listen to a new event that happens at start of sway_output's destroy handler
2018-06-26layer_shell: cleanup output link on output destroyDominique Martinet-0/+2
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-26Remove incorrect assertion and supporting codeRyan Dwyer-12/+0
Children can exist when destroying a container, such as when destroying the last output. Sway is not terminating in that case.
2018-06-26Fix crash when closing output window from outer sessionRyan Dwyer-3/+3
Emitting the close event needs to happen before container_output_destroy, because container_output_destroy sets the sway_output to NULL and sway_output is used in IPC.
2018-06-26Fix crash when disconnecting outputRyan Dwyer-1/+3
We were freeing the sway_output immediately upon disconnect which left a dangling pointer in the output's container. It then tried to use the pointer when the container is freed. We don't need to store the sway_output in an output's container which is destroying, so the fix is to set the pointer to NULL and remove the use in container_free. Also added an arrange when the output is disconnected for good measure.
2018-06-26Remove timer when transaction destroysRyan Dwyer-0/+3
2018-06-26Damage output when views toggle fullscreenRyan Dwyer-6/+26
Also add workspace to the transaction when a view maps in fullscreen mode.
2018-06-26Rename view's free callback to destroyRyan Dwyer-9/+9
2018-06-26Damage output when a fullscreen view unmapsRyan Dwyer-17/+15
Also moved the arranging into view_unmap to avoid excessive code duplication.
2018-06-26xdg_shell: make view floating if a parent has been setDominique Martinet-8/+11
Prompts e.g. authentication request from firefox-wayland ought to be floating. This is a bit coarse but just fixed size is not enough, here is what firefox does: [1285461.363] -> xdg_wm_base@18.get_xdg_surface(new id xdg_surface@68, wl_surface@71) [1285461.508] -> xdg_surface@68.get_toplevel(new id xdg_toplevel@67) [1285461.571] -> xdg_toplevel@67.set_parent(xdg_toplevel@37) [1285461.630] -> xdg_toplevel@67.set_title("Authentication Required") [1285461.736] -> xdg_toplevel@67.set_app_id("firefox") ... [1285476.549] xdg_toplevel@67.configure(0, 0, array) ... [1285502.080] -> xdg_toplevel@67.set_min_size(299, 187) [1285502.140] -> xdg_toplevel@67.set_max_size(1920, 32767) This can also be observed with e.g. the open window of gedit (gedit->open->other documents)
2018-06-25Rename progress_queue to transaction_progress_queueRyan Dwyer-3/+3
2018-06-25Fix potential crash when fullscreen view unmapsRyan Dwyer-3/+5
It happened when a view is a grandchild or deeper of the workspace, is fullscreen, and unmaps. The workspace would not be included in the transaction and its pointer to the fullscreen view was left dangling.
2018-06-24Merge pull request #2159 from acrisci/focus-dont-follow-keyboard-grabDrew DeVault-3/+6
dont focus-follow-mouse when keyboard grab
2018-06-24dont focus-follow-mouse when keyboard grabTony Crisci-3/+6
2018-06-25Implement per-configure debug timingsRyan Dwyer-1/+17
2018-06-25Implement transaction timings debugRyan Dwyer-0/+29
Launch sway with SWAY_DEBUG=txn_timings to enable it.
2018-06-24xwayland: accept configure requests from floating viewsemersion-2/+6
2018-06-24Fix another crash when moving out of stacks or tabsRyan Dwyer-1/+5
2018-06-24Implement atomic layout updates for xwayland viewsRyan Dwyer-27/+40
2018-06-24Fix crash when running move <direction> in an empty workspaceRyan Dwyer-5/+11
2018-06-24Fix crash when unmapping a view with reapable parentsRyan Dwyer-38/+58
container_destroy was calling container_reap_empty, which calls container_destroy and so on. Eventually the original container_destroy would return a NULL pointer to the caller which caused a crash. This also fixes an arrange on the wrong container when moving views in and out of stacks.
2018-06-24Fix crash related to stacks and tabsRyan Dwyer-2/+2
2018-06-24Force transactions to complete in orderRyan Dwyer-18/+74
This forces transactions to complete in order by using a singly linked list stored in the sway server.
2018-06-23Fix crash when deleting last child in a tabbed or stacked containerRyan Dwyer-12/+39
There was no `current` child because the container was destroyed. This makes it fall back to looking in the parent's current children list.
2018-06-23Merge remote-tracking branch 'upstream/master' into atomicRyan Dwyer-10/+31
2018-06-23Implement atomic layout updates for tree operationsRyan Dwyer-386/+542
This implements atomic layout updates for when views map, reparent or unmap.
2018-06-22Merge pull request #2155 from ael-code/fix_output_command_failureDrew DeVault-7/+14
bugfix: avoid access after free
2018-06-22bugfix: avoid access after freeael-code-7/+14
if src is NULL due to a previous error we cannot use it in the command result string. Moreover if `src` points to `p.we_wordv[0]` we cannot use it after `wordfree(&p)` in the command result string. Bonus feature: If there was an error accessing the file, the string rapresentation of the error is now included in the command result string.
2018-06-22Merge pull request #2146 from ↵Drew DeVault-3/+15
tobiasblass/prepare_server_before_dropping_privileges Perform (partial) server initialization before dropping privileges.
2018-06-22Merge pull request #2152 from atomnuker/masteremersion-0/+2
Init the dmabuf exporting protocol in wlroots
2018-06-22Init the dmabuf exporting protocol in wlrootsRostislav Pehlivanov-0/+2
Allows desktop capture via the dmabuf-capture wlroots example client.
2018-06-19Perform (partial) server initialization before dropping privileges.Tobias Blass-3/+15
Some operations during backend creation (e.g. becoming DRM master) require CAP_SYS_ADMIN privileges. At this point, sway has dropped them already, though. This patch splits the privileged part of server_init into its own function and calls it before dropping its privileges. This fixes the bug with minimal security implications.
2018-06-18Automatically float xwayland windowsemersion-26/+116
2018-06-18Preserve buffers during transactionsRyan Dwyer-67/+76
* Also fix parts of the rendering where it was rendering the pending state instead of current.
2018-06-18Merge remote-tracking branch 'upstream/master' into atomicRyan Dwyer-111/+135
2018-06-17Merge pull request #2143 from vilhalmer/mark-pool-buffers-busyDrew DeVault-0/+1
Set pool_buffers busy when handing them out
2018-06-17Merge branch 'master' into mark-pool-buffers-busyvil-135/+328
2018-06-17Set pool_buffers busy when handing them outvilhalmer-0/+1
2018-06-17Merge pull request #2140 from Hello71/patch-2Drew DeVault-1/+2
swayidle: fix stack overflow on sleep
2018-06-17swayidle: fix stack overflow on sleepAlex Xu (Hello71)-1/+2
2018-06-16Merge pull request #2135 from emersion/wlroots-1060Drew DeVault-3/+3
Update for swaywm/wlroots#1060
2018-06-16Update for swaywm/wlroots#1060emersion-3/+3
2018-06-13Merge pull request #2130 from frsfnrrg/keyboard-tuningDrew DeVault-108/+130
Clean up keyboard handling code
2018-06-12Fix keyboard shortcut handling inconsistenciesfrsfnrrg-96/+115
* Ensure that modifier keys are identified even when the next key does not produce a keysym. This requires that modifier change tracking be done for each sway_shortcut_state. * Permit regular and --release shortcuts on the same key combination. Distinct bindings are identified for press and release cases; note that the release binding needs to be identified for both key press and key release events. * Maintain ascending sort order for the shortcut state list, and keep track of the number of pressed key ids, for simpler (and hence faster) searching of the list of key bindings. * Move binding duplicate detection into get_active_binding to avoid duplicating error messages.
2018-06-12Sort binding key listsfrsfnrrg-12/+15
Sort the list comprising the set of keys for the binding in ascending order. (Keyboard shortcuts depend only on the set of simultaneously pressed keys, not their order, so this change should have no external effect.) This simplifies comparisons between bindings.
2018-06-11Merge remote-tracking branch 'upstream/master' into atomicRyan Dwyer-41/+507
2018-06-09Merge pull request #2124 from emersion/drag-icons1.0-alpha.3Drew DeVault-23/+193
Render drag icons
2018-06-09Merge pull request #2047 from natesymer/masterDrew DeVault-9/+320
Implement Gaps