util: pa_get_fqdn: always free addrinfo
authorFelipe Sateler <fsateler@debian.org>
Fri, 11 Sep 2015 23:15:20 +0000 (20:15 -0300)
committerTanu Kaskinen <tanuk@iki.fi>
Sat, 12 Sep 2015 13:04:20 +0000 (16:04 +0300)
Also fix the return error code check of getaddrinfo call

Coverity ID: 1323587

src/pulse/util.c

index 305673f..54fe7a2 100644 (file)
@@ -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;