From 5484f308b9aa53ab9c13d670d84a7fc35d447c1a Mon Sep 17 00:00:00 2001 From: Ian Fan Date: Thu, 14 Feb 2019 15:43:34 +0000 Subject: swaybar: prevent signal handler from firing during termination This prevents a heap-use-after-free crash when sway terminates. --- swaybar/main.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'swaybar/main.c') diff --git a/swaybar/main.c b/swaybar/main.c index 4ef74629..108b16e9 100644 --- a/swaybar/main.c +++ b/swaybar/main.c @@ -11,13 +11,7 @@ static struct swaybar swaybar; void sig_handler(int signal) { - bar_teardown(&swaybar); - exit(0); -} - -void sway_terminate(int code) { - bar_teardown(&swaybar); - exit(code); + swaybar.running = false; } int main(int argc, char **argv) { @@ -93,8 +87,6 @@ int main(int argc, char **argv) { } } - signal(SIGTERM, sig_handler); - if (!bar_setup(&swaybar, socket_path)) { free(socket_path); return 1; @@ -102,6 +94,10 @@ int main(int argc, char **argv) { free(socket_path); + signal(SIGINT, sig_handler); + signal(SIGTERM, sig_handler); + + swaybar.running = true; bar_run(&swaybar); bar_teardown(&swaybar); return 0; -- cgit v1.2.3