From 7aaf9138ccf7ab73883f28cfafd6e508d29ffa67 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Sat, 17 May 2014 19:13:27 +0200 Subject: 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 --- src/resolv/async_resolv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/resolv/async_resolv.c b/src/resolv/async_resolv.c index f0361ce8..38fa84d9 100644 --- a/src/resolv/async_resolv.c +++ b/src/resolv/async_resolv.c @@ -1151,7 +1151,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, @@ -1160,6 +1159,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; -- cgit