From f18a66c3841a9d8a3f9e350f7111daac27b30271 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 29 Apr 2006 22:57:28 +0000 Subject: 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 --- src/nss.c | 6 ++++-- 1 file 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; } -- cgit