From 94c980c6be2195281e7bde30f58e0be40cfd2fe5 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Fri, 26 Sep 2025 20:42:31 +0100 Subject: [PATCH] action: fix UAF when using prompt during reconfigure Reported-by: @jlindgren90 Fixes #3106 --- include/action.h | 1 + src/action.c | 9 +++++++++ src/server.c | 3 +++ 3 files changed, 13 insertions(+) diff --git a/include/action.h b/include/action.h index 31ecfb6e..7692e383 100644 --- a/include/action.h +++ b/include/action.h @@ -50,6 +50,7 @@ bool actions_contain_toggle_keybinds(struct wl_list *action_list); void actions_run(struct view *activator, struct server *server, struct wl_list *actions, struct cursor_context *ctx); +void action_prompts_destroy(void); bool action_check_prompt_result(pid_t pid, int exit_code); void action_free(struct action *action); diff --git a/src/action.c b/src/action.c index 62ab2b2d..9a5623ff 100644 --- a/src/action.c +++ b/src/action.c @@ -867,6 +867,15 @@ cleanup: buf_reset(&command); } +void +action_prompts_destroy(void) +{ + struct action_prompt *prompt, *tmp; + wl_list_for_each_safe(prompt, tmp, &prompts, link) { + action_prompt_destroy(prompt); + } +} + bool action_check_prompt_result(pid_t pid, int exit_code) { diff --git a/src/server.c b/src/server.c index 56f091b9..c39649b8 100644 --- a/src/server.c +++ b/src/server.c @@ -78,6 +78,9 @@ static void reload_config_and_theme(struct server *server) { + /* Avoid UAF when dialog client is used during reconfigure */ + action_prompts_destroy(); + scaled_buffer_invalidate_sharing(); rcxml_finish(); rcxml_read(rc.config_file);