diff options
author | Lennart Poettering <lennart@poettering.net> | 2006-04-29 22:57:28 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2006-04-29 22:57:28 +0000 |
commit | f18a66c3841a9d8a3f9e350f7111daac27b30271 (patch) | |
tree | 90d5c194fa1a6858bf2317f681e1448ca2a4afd8 | |
parent | ed5f7fe035c45c324852bb6dc94a8389d1064eaa (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.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -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; } |