[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.
This commit is contained in:
parent
d6270972f7
commit
86ae07a8c9
@ -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
6
NEWS
@ -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:
|
||||
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user