2006-05-06  Ulrich Drepper  <drepper@redhat.com>
	[BZ #2499]
	* resolv/res_query.c (__libc_res_nquery): If answerp != NULL,
	__libc_res_nsend might reallocate the buffer for the answer.  In
	this case we have to reload the HP pointer.
This commit is contained in:
Ulrich Drepper 2006-05-06 07:16:35 +00:00
parent 694b49cac3
commit acf82eaf27
2 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2006-05-06 Ulrich Drepper <drepper@redhat.com>
[BZ #2499]
* resolv/res_query.c (__libc_res_nquery): If answerp != NULL,
__libc_res_nsend might reallocate the buffer for the answer. In
this case we have to reload the HP pointer.
2006-05-05 Ulrich Drepper <drepper@redhat.com>
* stdio-common/vfscanf.c (memory_error): Remove definition. Add

View File

@ -69,6 +69,7 @@ static const char sccsid[] = "@(#)res_query.c 8.1 (Berkeley) 6/4/93";
static const char rcsid[] = "$BINDId: res_query.c,v 8.20 2000/02/29 05:39:12 vixie Exp $";
#endif /* LIBC_SCCS and not lint */
#include <assert.h>
#include <sys/types.h>
#include <sys/param.h>
#include <netinet/in.h>
@ -151,6 +152,7 @@ __libc_res_nquery(res_state statp,
free (buf);
return (n);
}
assert (answerp == NULL || (void *) *answerp == (void *) answer);
n = __libc_res_nsend(statp, buf, n, answer, anslen, answerp);
if (use_malloc)
free (buf);
@ -163,6 +165,10 @@ __libc_res_nquery(res_state statp,
return (n);
}
if (answerp != NULL)
/* __libc_res_nsend might have reallocated the buffer. */
hp = (HEADER *) *answerp;
if (hp->rcode != NOERROR || ntohs(hp->ancount) == 0) {
#ifdef DEBUG
if (statp->options & RES_DEBUG)