summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2014-05-17 19:13:27 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-06-03 13:43:13 +0200
commit6f895da367934fe44e101d8bc3d7dcee11034f3b (patch)
tree5de42a6b6e31c65a7ed710aecda5aba4ede36d0c /src
parentf278c896c1d3db25219199d0496934323e501f0b (diff)
downloadsssd-6f895da367934fe44e101d8bc3d7dcee11034f3b.tar.gz
sssd-6f895da367934fe44e101d8bc3d7dcee11034f3b.tar.xz
sssd-6f895da367934fe44e101d8bc3d7dcee11034f3b.zip
resolv: Do not try to free addrinfo in case of error
We should call freeaddrinfo only in situation if getaddrinfo succeeds. It is not specified in RFC2553 the behaviour of calling freeaddrinfo with the NULL argument. It is more portable to do not rely on undocumented behaviour of glibc. http://www.ietf.org/rfc/rfc2553.txt [Page 28] Reviewed-by: Jakub Hrozek <jhrozek@redhat.com> (cherry picked from commit 7aaf9138ccf7ab73883f28cfafd6e508d29ffa67)
Diffstat (limited to 'src')
-rw-r--r--src/resolv/async_resolv.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/resolv/async_resolv.c b/src/resolv/async_resolv.c
index 9770d3a17..7d10b1392 100644
--- a/src/resolv/async_resolv.c
+++ b/src/resolv/async_resolv.c
@@ -1156,7 +1156,6 @@ resolv_is_address(const char *name)
hints.ai_flags = AI_NUMERICHOST; /* No network lookups */
ret = getaddrinfo(name, NULL, &hints, &res);
- freeaddrinfo(res);
if (ret != 0) {
if (ret == -2) {
DEBUG(SSSDBG_TRACE_ALL,
@@ -1165,6 +1164,8 @@ resolv_is_address(const char *name)
DEBUG(SSSDBG_OP_FAILURE, "getaddrinfo failed [%d]: %s\n",
ret, gai_strerror(ret));
}
+ } else { /* ret == 0 */
+ freeaddrinfo(res);
}
return ret == 0;