From 00b12dc67a50683546c703427e86c8f832cca3fd Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 13 Apr 2026 09:30:53 +0200 Subject: [PATCH] pipewire: check init count before loading plugins When pw_init() was not called and the init_count is 0, the plugin path was not set and loading plugins will fail/segfault. Avoid this and return en error early instead with a message that pw_init() should be called first. See !2784 --- src/pipewire/pipewire.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/pipewire/pipewire.c b/src/pipewire/pipewire.c index bccd48f35..89d0518b8 100644 --- a/src/pipewire/pipewire.c +++ b/src/pipewire/pipewire.c @@ -300,10 +300,18 @@ struct spa_handle *pw_load_spa_handle(const char *lib, const struct spa_support support[]) { struct spa_handle *handle; + struct support *sup = &global_support; pthread_mutex_lock(&support_lock); + if (sup->init_count == 0) + goto error; handle = load_spa_handle(lib, factory_name, info, n_support, support); pthread_mutex_unlock(&support_lock); return handle; +error: + pw_log_error("load lib: pw_init() was not called"); + pthread_mutex_unlock(&support_lock); + errno = EBADFD; + return NULL; } static struct handle *find_handle(struct spa_handle *handle)