From b86b1f870a3f06a8be26c9dc59953ed827516fe4 Mon Sep 17 00:00:00 2001 From: Andrew Schwartzmeyer Date: Fri, 9 Sep 2016 11:44:34 -0700 Subject: [PATCH] Fix memory leak in GetFullyQualifiedName() --- src/libpsl-native/src/getfullyqualifiedname.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libpsl-native/src/getfullyqualifiedname.cpp b/src/libpsl-native/src/getfullyqualifiedname.cpp index c33e11e8e..ef3605b4d 100644 --- a/src/libpsl-native/src/getfullyqualifiedname.cpp +++ b/src/libpsl-native/src/getfullyqualifiedname.cpp @@ -43,17 +43,18 @@ char *GetFullyQualifiedName() * POSIX compliant, and some are being deprecated. getaddrinfo seems * to be the best choice. */ + char *fullName = NULL; if (getaddrinfo(computerName, "http", &hints, &info) != 0) { - errno = ERROR_BAD_NET_NAME; - return NULL; + goto exit; } - // info is actually a link-list. We'll just return the first full name - - char *fullName = strndup(info->ai_canonname, strlen(info->ai_canonname)); + // return the first canonical name in the list + fullName = strndup(info->ai_canonname, strlen(info->ai_canonname)); + // only free info if getaddrinfo was successful freeaddrinfo(info); +exit: free(computerName); return fullName; }