From 9769dee5e70852594c7e01f34d8795817b64a158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Sat, 6 Nov 2021 16:10:56 +0100 Subject: [PATCH] pulse-server: module-zeroconf-publish: avoid double-free When a module's `load()` fails, its `unload()` will unconditionally be called. Freeing resource in `load()` while not marking those resources freed (e.g. setting the pointers to NULL) will result in double-free when the module's `unload()` method is called. --- .../module-protocol-pulse/modules/module-zeroconf-publish.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/modules/module-protocol-pulse/modules/module-zeroconf-publish.c b/src/modules/module-protocol-pulse/modules/module-zeroconf-publish.c index b9f261bb9..172efef83 100644 --- a/src/modules/module-protocol-pulse/modules/module-zeroconf-publish.c +++ b/src/modules/module-protocol-pulse/modules/module-zeroconf-publish.c @@ -573,15 +573,12 @@ static int module_zeroconf_publish_load(struct client *client, struct module *mo client_callback, data, &error); if (!data->client) { pw_log_error("avahi_client_new() failed: %s", avahi_strerror(error)); - pw_avahi_poll_free(data->avahi_poll); return -errno; } data->manager = pw_manager_new(data->core); if (client->manager == NULL) { pw_log_error("Failed to create pipewire manager"); - avahi_client_free(data->client); - pw_avahi_poll_free(data->avahi_poll); return -errno; }