summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-04-29 22:57:28 +0000
committerLennart Poettering <lennart@poettering.net>2006-04-29 22:57:28 +0000
commitf18a66c3841a9d8a3f9e350f7111daac27b30271 (patch)
tree90d5c194fa1a6858bf2317f681e1448ca2a4afd8
parented5f7fe035c45c324852bb6dc94a8389d1064eaa (diff)
improve compatibility with apps that pass a too large address buffer when resolving addresses
git-svn-id: file:///home/lennart/svn/public/nss-mdns/trunk@99 0ee8848e-81ea-0310-a63a-f631d1a40d77
-rw-r--r--src/nss.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/nss.c b/src/nss.c
index 7654c16..04cc93f 100644
--- a/src/nss.c
+++ b/src/nss.c
@@ -321,6 +321,7 @@ enum nss_status _nss_mdns_gethostbyname2_r(
{
*errnop = EINVAL;
*h_errnop = NO_RECOVERY;
+
goto finish;
}
@@ -332,7 +333,7 @@ enum nss_status _nss_mdns_gethostbyname2_r(
*errnop = ERANGE;
*h_errnop = NO_RECOVERY;
status = NSS_STATUS_TRYAGAIN;
-
+
goto finish;
}
@@ -581,7 +582,7 @@ enum nss_status _nss_mdns_gethostbyaddr_r(
/* Check for address types */
address_length = af == AF_INET ? sizeof(ipv4_address_t) : sizeof(ipv6_address_t);
- if (len != (int) address_length ||
+ if (len < (int) address_length ||
#ifdef NSS_IPV4_ONLY
af != AF_INET
#elif NSS_IPV6_ONLY
@@ -592,6 +593,7 @@ enum nss_status _nss_mdns_gethostbyaddr_r(
) {
*errnop = EINVAL;
*h_errnop = NO_RECOVERY;
+
goto finish;
}