* resolv/nss_dns/dns-host.c (gaih_getanswer): Look for errno
        in the right place. Discard and retry query if response is
        larger than input buffer size.
This commit is contained in:
Jeff Law 2012-03-28 10:09:29 -06:00
parent d6270972f7
commit 86ae07a8c9
3 changed files with 17 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2012-02-22 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #13760]
* resolv/nss_dns/dns-host.c (gaih_getanswer): Look for errno
in the right place. Discard and retry query if response is
larger than input buffer size.
2012-03-28 Joseph Myers <joseph@codesourcery.com>
[BZ #369]

6
NEWS
View File

@ -16,9 +16,9 @@ Version 2.16
11494, 12047, 13058, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
13532, 13533, 13547, 13551, 13552, 13553, 13555, 13559, 13566, 13583,
13618, 13637, 13656, 13658, 13673, 13695, 13704, 13706, 13726, 13738,
13786, 13792, 13806, 13824, 13840, 13841, 13844, 13846, 13851, 13852,
13854, 13871, 13879, 13883, 13892, 13910, 13911, 13912, 13913, 13915,
13916, 13917, 13918, 13919, 13920, 13921
13760, 13786, 13792, 13806, 13824, 13840, 13841, 13844, 13846, 13851,
13852, 13854, 13871, 13879, 13883, 13892, 13910, 13911, 13912, 13913,
13915, 13916, 13917, 13918, 13919, 13920, 13921
* ISO C11 support:

View File

@ -1219,7 +1219,13 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2,
&first);
if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND
|| (status == NSS_STATUS_TRYAGAIN
&& (errno != ERANGE || *h_errnop != NO_RECOVERY)))
/* We want to look at the second answer in case of an
NSS_STATUS_TRYAGAIN only if the error is non-recoverable, i.e.
*h_errnop is NO_RECOVERY. If not, and if the failure was due to
an insufficient buffer (ERANGE), then we need to drop the results
and pass on the NSS_STATUS_TRYAGAIN to the caller so that it can
repeat the query with a larger buffer. */
&& (*errnop != ERANGE || *h_errnop == NO_RECOVERY)))
&& answer2 != NULL && anslen2 > 0)
{
enum nss_status status2 = gaih_getanswer_slice(answer2, anslen2, qname,