From dac60d4e5b993c9c5cf7bf40644ecdc79b0e7401 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 8 Jun 2020 11:15:53 +0200 Subject: [PATCH] avoid some leaks and NULL pointer derefs --- src/modules/spa/spa-node.c | 3 +++ src/pipewire/buffers.c | 4 +++- src/pipewire/properties.c | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/spa/spa-node.c b/src/modules/spa/spa-node.c index 40dcd41b5..034c78185 100644 --- a/src/modules/spa/spa-node.c +++ b/src/modules/spa/spa-node.c @@ -189,6 +189,9 @@ setup_props(struct pw_context *context, struct spa_node *spa_node, struct pw_pro if ((prop = spa_pod_find_prop(props, prop, type))) { const char *value = pw_properties_get(pw_props, key); + if (value == NULL) + continue; + pw_log_debug("configure prop %s to %s", key, value); switch(prop->value.type) { diff --git a/src/pipewire/buffers.c b/src/pipewire/buffers.c index 072d03f76..cb408648d 100644 --- a/src/pipewire/buffers.c +++ b/src/pipewire/buffers.c @@ -132,8 +132,10 @@ static int alloc_buffers(struct pw_mempool *pool, PW_MEMBLOCK_FLAG_MAP, SPA_DATA_MemFd, n_buffers * info.mem_size); - if (m == NULL) + if (m == NULL) { + free(buffers); return -errno; + } data = m->map->ptr; } else { diff --git a/src/pipewire/properties.c b/src/pipewire/properties.c index 6cb1075cc..cf6156bd8 100644 --- a/src/pipewire/properties.c +++ b/src/pipewire/properties.c @@ -181,6 +181,8 @@ pw_properties_new_string(const char *str) if (eq && eq != val) { *eq = '\0'; add_func(&impl->this, val, strdup(eq+1)); + } else { + free(val); } s = pw_split_walk(str, " \t\n\r", &len, &state); }