mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
[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:
@ -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>
|
2012-03-28 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
[BZ #369]
|
[BZ #369]
|
||||||
|
6
NEWS
6
NEWS
@ -16,9 +16,9 @@ Version 2.16
|
|||||||
11494, 12047, 13058, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
|
11494, 12047, 13058, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
|
||||||
13532, 13533, 13547, 13551, 13552, 13553, 13555, 13559, 13566, 13583,
|
13532, 13533, 13547, 13551, 13552, 13553, 13555, 13559, 13566, 13583,
|
||||||
13618, 13637, 13656, 13658, 13673, 13695, 13704, 13706, 13726, 13738,
|
13618, 13637, 13656, 13658, 13673, 13695, 13704, 13706, 13726, 13738,
|
||||||
13786, 13792, 13806, 13824, 13840, 13841, 13844, 13846, 13851, 13852,
|
13760, 13786, 13792, 13806, 13824, 13840, 13841, 13844, 13846, 13851,
|
||||||
13854, 13871, 13879, 13883, 13892, 13910, 13911, 13912, 13913, 13915,
|
13852, 13854, 13871, 13879, 13883, 13892, 13910, 13911, 13912, 13913,
|
||||||
13916, 13917, 13918, 13919, 13920, 13921
|
13915, 13916, 13917, 13918, 13919, 13920, 13921
|
||||||
|
|
||||||
* ISO C11 support:
|
* ISO C11 support:
|
||||||
|
|
||||||
|
@ -1219,7 +1219,13 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2,
|
|||||||
&first);
|
&first);
|
||||||
if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND
|
if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND
|
||||||
|| (status == NSS_STATUS_TRYAGAIN
|
|| (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)
|
&& answer2 != NULL && anslen2 > 0)
|
||||||
{
|
{
|
||||||
enum nss_status status2 = gaih_getanswer_slice(answer2, anslen2, qname,
|
enum nss_status status2 = gaih_getanswer_slice(answer2, anslen2, qname,
|
||||||
|
Reference in New Issue
Block a user