[pulseaudio-discuss] [PATCH] raop: Fix a memory leak
Tanu Kaskinen
tanu.kaskinen at linux.intel.com
Wed Nov 19 08:43:07 PST 2014
a.path_or_host wasn't freed after calling pa_parse_address().
---
I needed pa_parse_address() in my module-tunnel-manager work, and I
found the interface to be prone to memory leaks, so I decided to
check all call sites of the function. I found one leak. I've added it
to my todo list to make the function interface safer, but I don't
expect to get around to that task any time soon, so if anyone else
wants to fix it, be my guest.
src/modules/raop/raop_client.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/modules/raop/raop_client.c b/src/modules/raop/raop_client.c
index 5bb0bb4..7a6d009 100644
--- a/src/modules/raop/raop_client.c
+++ b/src/modules/raop/raop_client.c
@@ -372,14 +372,19 @@ pa_raop_client* pa_raop_client_new(pa_core *core, const char* host) {
pa_assert(core);
pa_assert(host);
- if (pa_parse_address(host, &a) < 0 || a.type == PA_PARSED_ADDRESS_UNIX)
+ if (pa_parse_address(host, &a) < 0)
return NULL;
+ if (a.type == PA_PARSED_ADDRESS_UNIX) {
+ pa_xfree(a.path_or_host);
+ return NULL;
+ }
+
c = pa_xnew0(pa_raop_client, 1);
c->core = core;
c->fd = -1;
- c->host = pa_xstrdup(a.path_or_host);
+ c->host = a.path_or_host;
if (a.port)
c->port = a.port;
else
--
1.9.3
More information about the pulseaudio-discuss
mailing list