From 1f2cb7ac674694abbc602665fd15dadfa8e3760e Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 23 Feb 2021 17:48:29 +0100 Subject: [PATCH] don't crash with missing libraries --- src/examples/media-session/pw-reserve.c | 6 ++++-- src/tools/pw-cli.c | 4 ++++ src/tools/pw-metadata.c | 4 ++++ src/tools/pw-mididump.c | 3 +++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/examples/media-session/pw-reserve.c b/src/examples/media-session/pw-reserve.c index 2d1f5c889..a6f7e2dce 100644 --- a/src/examples/media-session/pw-reserve.c +++ b/src/examples/media-session/pw-reserve.c @@ -207,8 +207,10 @@ int main(int argc, char *argv[]) rd_device_release(impl.device); exit: - pw_context_destroy(impl.context); - pw_main_loop_destroy(impl.mainloop); + if (impl.context) + pw_context_destroy(impl.context); + if (impl.mainloop) + pw_main_loop_destroy(impl.mainloop); pw_deinit(); diff --git a/src/tools/pw-cli.c b/src/tools/pw-cli.c index 7706a15fa..52311735b 100644 --- a/src/tools/pw-cli.c +++ b/src/tools/pw-cli.c @@ -3002,6 +3002,10 @@ int main(int argc, char *argv[]) } data.loop = pw_main_loop_new(NULL); + if (data.loop == NULL) { + fprintf(stderr, "Broken installation: %m\n"); + return -1; + } l = pw_main_loop_get_loop(data.loop); pw_loop_add_signal(l, SIGINT, do_quit, &data); pw_loop_add_signal(l, SIGTERM, do_quit, &data); diff --git a/src/tools/pw-metadata.c b/src/tools/pw-metadata.c index f0c8f08b6..562958b32 100644 --- a/src/tools/pw-metadata.c +++ b/src/tools/pw-metadata.c @@ -240,6 +240,10 @@ int main(int argc, char *argv[]) data.opt_type = argv[optind++]; data.loop = pw_main_loop_new(NULL); + if (data.loop == NULL) { + fprintf(stderr, "can't create mainloop: %m\n"); + return -1; + } pw_loop_add_signal(pw_main_loop_get_loop(data.loop), SIGINT, do_quit, &data); pw_loop_add_signal(pw_main_loop_get_loop(data.loop), SIGTERM, do_quit, &data); diff --git a/src/tools/pw-mididump.c b/src/tools/pw-mididump.c index 87e6fb823..4e135ccda 100644 --- a/src/tools/pw-mididump.c +++ b/src/tools/pw-mididump.c @@ -134,6 +134,9 @@ static void do_quit(void *userdata, int signal_number) static int dump_filter(struct data *data) { data->loop = pw_main_loop_new(NULL); + if (data->loop == NULL) + return -errno; + pw_loop_add_signal(pw_main_loop_get_loop(data->loop), SIGINT, do_quit, data); pw_loop_add_signal(pw_main_loop_get_loop(data->loop), SIGTERM, do_quit, data);