From 662fd8a1f9d769c5a407b6dbe054bdcc53caa481 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 5 Mar 2021 20:16:29 +0100 Subject: [PATCH] pulse-server: avoid crashing when clearing metadata The key will be NULL so we can't strdup it. Fixes #845 --- src/examples/media-session/policy-node.c | 2 +- src/modules/module-protocol-pulse/pulse-server.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/examples/media-session/policy-node.c b/src/examples/media-session/policy-node.c index 41fe4d78e..1bcc6c257 100644 --- a/src/examples/media-session/policy-node.c +++ b/src/examples/media-session/policy-node.c @@ -871,7 +871,7 @@ static void refresh_auto_default_nodes(struct impl *impl) const char *name = pw_properties_get(node->obj->obj.props, PW_KEY_NODE_NAME); char buf[1024]; - if (strzcmp(name, def->value) == 0) + if (name == NULL || strzcmp(name, def->value) == 0) continue; free(def->value); diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c index ae2bcb413..0c1167f8e 100644 --- a/src/modules/module-protocol-pulse/pulse-server.c +++ b/src/modules/module-protocol-pulse/pulse-server.c @@ -953,7 +953,7 @@ static void manager_metadata(void *data, struct pw_manager_object *o, } if ((changed = strzcmp(client->default_sink, value))) { free(client->default_sink); - client->default_sink = strdup(value); + client->default_sink = value ? strdup(value) : NULL; } } if (key == NULL || strcmp(key, "default.audio.source") == 0) { @@ -966,7 +966,7 @@ static void manager_metadata(void *data, struct pw_manager_object *o, } if ((changed = strzcmp(client->default_source, value))) { free(client->default_source); - client->default_source = strdup(value); + client->default_source = value ? strdup(value) : NULL; } } if (changed)