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-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
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>
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);
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)