swayfx/sway/commands
Michael Weiser 730efbc89c Prevent use-after-free on first bar subcommand error
If any error is encountered during execution of the first subcommand of
a freshly created bar configuration, parsing apparently is to be aborted
and the current bar config is freed. The pointer to that memory is left
dangling though, leading to a use-after-free on successive bar
subcommands. This quite reliably ends in a crash like so:

sway -c reproducer.config
00:00:00.083 [sway/config.c:865] Error on line 2 'foo bar': Unknown/invalid command 'foo' (s)
free(): double free detected in tcache 2
00:00:00.608 [swaynag/swaynag.c:451] failed to register with the wayland display
Aborted (core dumped)

Minimal reproducer config:
bar {
        foo bar
        position top
}

Other messages:
malloc(): unaligned fastbin chunk detected
double free or corruption (fasttop)

The invalid command has to be the first for a newly created bar config.
Removing the command or switching order so it's not the first one masks
the problem.

Prevent this from occuring by resetting the pointer to NULL after
freeing the memory.

Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
2021-04-18 20:53:36 -07:00
..
bar Declare all struct cmd_handler arrays const 2021-02-04 09:49:06 +01:00
input input/tablet: add tool_mode option to set tablet tools as relative input 2020-10-12 15:01:37 +02:00
output Add toggle logic inside DPMS handler 2021-03-25 11:01:04 +01:00
seat input/cursor: unhide cursor on synthetic input 2020-12-06 09:38:49 +01:00
assign.c Replace wlr_log with sway_log 2019-01-21 12:59:42 +01:00
bar.c Prevent use-after-free on first bar subcommand error 2021-04-18 20:53:36 -07:00
bind.c input: Only commit transactions when necessary 2021-02-14 13:19:08 -05:00
border.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
client.c cmd_client_*: support optional args for i3 compat 2019-12-29 10:40:06 +01:00
create_output.c Implement create_output command for headless backend 2020-04-14 16:06:20 +02:00
default_border.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
default_floating_border.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
default_orientation.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
exec.c exec: fix validation during config reload 2020-08-24 09:41:54 +02:00
exec_always.c exec: fix validation during config reload 2020-08-24 09:41:54 +02:00
exit.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
floating.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
floating_minmax_size.c Replace wlr_log with sway_log 2019-01-21 12:59:42 +01:00
floating_modifier.c Add ability to remove the floating modifier 2020-01-20 09:19:04 -07:00
focus.c focus: beyond fullscreen when focused explicitly 2021-02-25 09:40:20 -05:00
focus_follows_mouse.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
focus_on_window_activation.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
focus_wrapping.c focus: support focus_wrapping workspace 2019-10-17 13:48:52 +03:00
font.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
for_window.c Avoid adding duplicate criteria for no_focus and command 2019-07-27 03:53:05 +03:00
force_display_urgency_hint.c fix force_display_urgency_hint parsing 2020-08-03 15:39:48 +02:00
force_focus_wrapping.c Add deprecation warnings for new_float, new_window, and force_focus_wrapping. 2019-04-14 20:44:12 -04:00
fullscreen.c cmd_fullscreen: allow fullscreen on fullscreen split containers 2021-04-16 11:36:14 +02:00
gaps.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
hide_edge_borders.c smart_borders: separate smartness from edge types 2019-11-04 21:16:27 -05:00
include.c Make load_include_configs void. Fix some cases where WD would not be restored. 2019-02-24 00:01:35 -05:00
inhibit_idle.c Implement inhibit_idle command 2019-03-24 19:26:12 -06:00
input.c Declare all struct cmd_handler arrays const 2021-02-04 09:49:06 +01:00
kill.c Replace wlr_log with sway_log 2019-01-21 12:59:42 +01:00
layout.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
mark.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
max_render_time.c view: add max_render_time 2019-11-17 20:18:42 +01:00
mode.c Declare all struct cmd_handler arrays const 2021-02-04 09:49:06 +01:00
mouse_warping.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
move.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
new_float.c Add deprecation warnings for new_float, new_window, and force_focus_wrapping. 2019-04-14 20:44:12 -04:00
new_window.c Add deprecation warnings for new_float, new_window, and force_focus_wrapping. 2019-04-14 20:44:12 -04:00
no_focus.c Avoid adding duplicate criteria for no_focus and command 2019-07-27 03:53:05 +03:00
nop.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
opacity.c cmd_opacity: add relative opacity changes 2019-08-05 22:10:36 -04:00
output.c Declare all struct cmd_handler arrays const 2021-02-04 09:49:06 +01:00
popup_during_fullscreen.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
reload.c Reload command now matches i3's implementation 2020-07-07 17:15:57 -04:00
rename.c Allow for workspace renaming during exec handling 2019-03-23 17:49:27 -04:00
resize.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
scratchpad.c Fix for_window criteria and mouse button bindings 2021-02-25 09:48:39 -05:00
seat.c Declare all struct cmd_handler arrays const 2021-02-04 09:49:06 +01:00
set.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
shortcuts_inhibitor.c commands: Add per-view shortcuts_inhibitor command 2020-05-13 21:22:16 -04:00
show_marks.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
smart_borders.c smart_borders: separate smartness from edge types 2019-11-04 21:16:27 -05:00
smart_gaps.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
split.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
sticky.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
swap.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
swaybg_command.c Replace wlr_log with sway_log 2019-01-21 12:59:42 +01:00
swaynag_command.c Replace wlr_log with sway_log 2019-01-21 12:59:42 +01:00
tiling_drag.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
tiling_drag_threshold.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
title_align.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
title_format.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
titlebar_border_thickness.c Handle NULL from output_get_active_workspace 2019-02-21 21:18:03 +01:00
titlebar_padding.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
unmark.c Fix for_window criteria and mouse button bindings 2021-02-25 09:48:39 -05:00
urgent.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
workspace.c check for workspace command name arg 2020-03-24 16:07:12 +01:00
workspace_layout.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
ws_auto_back_and_forth.c Remove now-unused "input" argument of cmd_results_new 2019-01-14 08:05:29 -05:00
xwayland.c Fix typo for the force/immediate option in xwayland_mode enum 2019-09-02 17:06:38 +03:00