mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 11:20:07 +00:00
* resolv/res_query.c (__libc_res_nquery): Align buffer for T_AAAA
query. Adjust buffer size computation for padding.
This commit is contained in:
parent
75684bd7a8
commit
44abc397e6
@ -1,3 +1,8 @@
|
|||||||
|
2008-07-09 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* resolv/res_query.c (__libc_res_nquery): Align buffer for T_AAAA
|
||||||
|
query. Adjust buffer size computation for padding.
|
||||||
|
|
||||||
2008-07-08 Ulrich Drepper <drepper@redhat.com>
|
2008-07-08 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* stdio-common/Makefile: Add rules to build and run tst-setvbuf1.
|
* stdio-common/Makefile: Add rules to build and run tst-setvbuf1.
|
||||||
|
@ -146,18 +146,34 @@ __libc_res_nquery(res_state statp,
|
|||||||
{
|
{
|
||||||
if ((oflags & RES_F_EDNS0ERR) == 0
|
if ((oflags & RES_F_EDNS0ERR) == 0
|
||||||
&& (statp->options & RES_USE_EDNS0) != 0)
|
&& (statp->options & RES_USE_EDNS0) != 0)
|
||||||
|
{
|
||||||
n = __res_nopt(statp, n, query1, bufsize, anslen / 2);
|
n = __res_nopt(statp, n, query1, bufsize, anslen / 2);
|
||||||
|
if (n < 0)
|
||||||
|
goto unspec_nomem;
|
||||||
|
}
|
||||||
|
|
||||||
nquery1 = n;
|
nquery1 = n;
|
||||||
query2 = buf + nquery1;
|
/* Align the buffer. */
|
||||||
|
int npad = ((nquery1 + __alignof__ (HEADER) - 1)
|
||||||
|
& ~(__alignof__ (HEADER)));
|
||||||
|
if (n > bufsize - npad)
|
||||||
|
{
|
||||||
|
n = -1;
|
||||||
|
goto unspec_nomem;
|
||||||
|
}
|
||||||
|
query2 = buf + npad;
|
||||||
|
int nused = n + npad;
|
||||||
n = res_nmkquery(statp, QUERY, name, class, T_AAAA, NULL, 0,
|
n = res_nmkquery(statp, QUERY, name, class, T_AAAA, NULL, 0,
|
||||||
NULL, query2, bufsize - n);
|
NULL, query2, bufsize - nused);
|
||||||
if (n > 0
|
if (n > 0
|
||||||
&& (oflags & RES_F_EDNS0ERR) == 0
|
&& (oflags & RES_F_EDNS0ERR) == 0
|
||||||
&& (statp->options & RES_USE_EDNS0) != 0)
|
&& (statp->options & RES_USE_EDNS0) != 0)
|
||||||
n = __res_nopt(statp, n, query2, bufsize - n, anslen / 2);
|
n = __res_nopt(statp, n, query2, bufsize - nused - n,
|
||||||
|
anslen / 2);
|
||||||
nquery2 = n;
|
nquery2 = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unspec_nomem:;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user