diff options
author | Felipe Sateler <fsateler@debian.org> | 2015-09-11 20:15:20 -0300 |
---|---|---|
committer | Tanu Kaskinen <tanuk@iki.fi> | 2015-09-12 16:04:20 +0300 |
commit | b42575e1832c5af4ce5cc8512361e4c33b04a71d (patch) | |
tree | 9030c457c36584cce9782bb9a0ac43c38677505a | |
parent | 195960859c1e4d03255acd7236786ffb68f8c416 (diff) | |
download | pulseaudio-b42575e1832c5af4ce5cc8512361e4c33b04a71d.tar.gz |
util: pa_get_fqdn: always free addrinfo
Also fix the return error code check of getaddrinfo call
Coverity ID: 1323587
-rw-r--r-- | src/pulse/util.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/pulse/util.c b/src/pulse/util.c index 305673fb2..54fe7a285 100644 --- a/src/pulse/util.c +++ b/src/pulse/util.c @@ -297,7 +297,7 @@ char *pa_path_get_filename(const char *p) { char *pa_get_fqdn(char *s, size_t l) { char hn[256]; #ifdef HAVE_GETADDRINFO - struct addrinfo *a, hints; + struct addrinfo *a = NULL, hints; #endif pa_assert(s); @@ -311,9 +311,14 @@ char *pa_get_fqdn(char *s, size_t l) { hints.ai_family = AF_UNSPEC; hints.ai_flags = AI_CANONNAME; - if (getaddrinfo(hn, NULL, &hints, &a) < 0 || !a || !a->ai_canonname || !*a->ai_canonname) + if (getaddrinfo(hn, NULL, &hints, &a)) return pa_strlcpy(s, hn, l); + if (!a->ai_canonname || !*a->ai_canonname) { + freeaddrinfo(a); + return pa_strlcpy(s, hn, l); + } + pa_strlcpy(s, a->ai_canonname, l); freeaddrinfo(a); return s; |