mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Update.
1999-10-01 Ulrich Drepper <drepper@cygnus.com> * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Align handling of IPv6 tunnel address handling with bind 8.2.1. Allow len argument to be greater than needed address size.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
1999-10-01 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Align
|
||||||
|
handling of IPv6 tunnel address handling with bind 8.2.1. Allow
|
||||||
|
len argument to be greater than needed address size.
|
||||||
|
|
||||||
1999-10-01 Andreas Jaeger <aj@suse.de>
|
1999-10-01 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
* locale/programs/ld-collate.c (insert_value): Add cast to avoid
|
* locale/programs/ld-collate.c (insert_value): Add cast to avoid
|
||||||
|
@ -197,6 +197,7 @@ _nss_dns_gethostbyaddr_r (const char *addr, size_t len, int af,
|
|||||||
{
|
{
|
||||||
static const u_char mapped[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0xff,0xff };
|
static const u_char mapped[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0xff,0xff };
|
||||||
static const u_char tunnelled[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
|
static const u_char tunnelled[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
|
||||||
|
static const u_char v6local[] = { 0,0, 0,1 };
|
||||||
const u_char *uaddr = (const u_char *)addr;
|
const u_char *uaddr = (const u_char *)addr;
|
||||||
struct host_data
|
struct host_data
|
||||||
{
|
{
|
||||||
@ -210,9 +211,10 @@ _nss_dns_gethostbyaddr_r (const char *addr, size_t len, int af,
|
|||||||
size_t size;
|
size_t size;
|
||||||
int n, status;
|
int n, status;
|
||||||
|
|
||||||
if (af == AF_INET6 && len == IN6ADDRSZ &&
|
if (af == AF_INET6 && len == IN6ADDRSZ
|
||||||
(memcmp (uaddr, mapped, sizeof mapped) == 0
|
&& (memcmp (uaddr, mapped, sizeof mapped) == 0
|
||||||
|| memcmp (uaddr, tunnelled, sizeof tunnelled) == 0))
|
|| (memcmp (uaddr, tunnelled, sizeof tunnelled) == 0
|
||||||
|
&& memcmp (&uaddr[sizeof tunnelled], v6local, sizeof v6local))))
|
||||||
{
|
{
|
||||||
/* Unmap. */
|
/* Unmap. */
|
||||||
addr += sizeof mapped;
|
addr += sizeof mapped;
|
||||||
@ -234,7 +236,7 @@ _nss_dns_gethostbyaddr_r (const char *addr, size_t len, int af,
|
|||||||
*h_errnop = NETDB_INTERNAL;
|
*h_errnop = NETDB_INTERNAL;
|
||||||
return NSS_STATUS_UNAVAIL;
|
return NSS_STATUS_UNAVAIL;
|
||||||
}
|
}
|
||||||
if (size != len)
|
if (size > len)
|
||||||
{
|
{
|
||||||
*errnop = EAFNOSUPPORT;
|
*errnop = EAFNOSUPPORT;
|
||||||
*h_errnop = NETDB_INTERNAL;
|
*h_errnop = NETDB_INTERNAL;
|
||||||
|
Reference in New Issue
Block a user