summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Sateler <fsateler@debian.org>2015-09-11 20:15:20 -0300
committerTanu Kaskinen <tanuk@iki.fi>2015-09-12 16:04:20 +0300
commitb42575e1832c5af4ce5cc8512361e4c33b04a71d (patch)
tree9030c457c36584cce9782bb9a0ac43c38677505a
parent195960859c1e4d03255acd7236786ffb68f8c416 (diff)
downloadpulseaudio-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.c9
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;