mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Update.
2004-08-05 Ulrich Drepper <drepper@redhat.com> * sysdeps/posix/getaddrinfo.c (gaih_inet): Recognize all the IPv4 numeric address formats inet_addr knows. (getaddrinfo): Allow AI_NUMERICSERV flag. If neither IPv4 nor IPv6 inerface is present we cannot make any decision for AI_ADDRCONFIG. Fail if AI_NUMERICSERV is set and the string is not just a number. Remove useless freeaddrinfo call. * resolv/netdb.h (AI_NUMERICSERV): Define. Based on a patch by a.guru@sympatico.ca. 2004-08-04 Jakub Jelinek <jakub@redhat.com> * stdlib/strfmon_l.c (__vstrfmon_l): Memset whole info structure instead of trying to initialize some, but not all, fields one by one. * stdio-common/printf_size.c (printf_size): Initialize fb_info structure with *info instead of trying to initialize some, but not all, fields from it. * nscd/connections.c (handle_request): Check if req->type is in LASTDBREQ .. LASTREQ range instead of req. * locale/programs/linereader.c (lr_create): Initialize lr->return_widestr to 0. * elf/dl-close.c (free_slotinfo): Add __libc_freeres_fn_section. (free_mem): Call free_slotinfo just once. * stdio-common/tst-fmemopen.c (main): Check for MAP_FAILED instead of NULL. * locale/localeinfo.h (_nl_locale_subfreeres): New prototype. * locale/setlocale.c (free_category): Add __libc_freeres_fn_section. (free_mem): Rename to _nl_locale_subfreeres. * iconv/gconv_db.c: Include locale/localeinfo.h. (free_derivation, free_modules_db): Add __libc_freeres_fn_section. (free_mem): Call _nl_locale_subfreeres. * iconv/gconv_dl.c (do_release_all): Add __libc_freeres_fn_section.
This commit is contained in:
parent
76b82be4f3
commit
c1d9808521
40
ChangeLog
40
ChangeLog
@ -1,3 +1,43 @@
|
||||
2004-08-05 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/posix/getaddrinfo.c (gaih_inet): Recognize all the IPv4
|
||||
numeric address formats inet_addr knows.
|
||||
(getaddrinfo): Allow AI_NUMERICSERV flag.
|
||||
If neither IPv4 nor IPv6 inerface is present we cannot make any
|
||||
decision for AI_ADDRCONFIG. Fail if AI_NUMERICSERV is set and the
|
||||
string is not just a number. Remove useless freeaddrinfo call.
|
||||
* resolv/netdb.h (AI_NUMERICSERV): Define.
|
||||
Based on a patch by a.guru@sympatico.ca.
|
||||
|
||||
2004-08-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* stdlib/strfmon_l.c (__vstrfmon_l): Memset whole info structure
|
||||
instead of trying to initialize some, but not all, fields one by
|
||||
one.
|
||||
* stdio-common/printf_size.c (printf_size): Initialize fb_info
|
||||
structure with *info instead of trying to initialize some, but not
|
||||
all, fields from it.
|
||||
|
||||
* nscd/connections.c (handle_request): Check if req->type is in
|
||||
LASTDBREQ .. LASTREQ range instead of req.
|
||||
|
||||
* locale/programs/linereader.c (lr_create): Initialize
|
||||
lr->return_widestr to 0.
|
||||
|
||||
* elf/dl-close.c (free_slotinfo): Add __libc_freeres_fn_section.
|
||||
(free_mem): Call free_slotinfo just once.
|
||||
|
||||
* stdio-common/tst-fmemopen.c (main): Check for MAP_FAILED instead
|
||||
of NULL.
|
||||
|
||||
* locale/localeinfo.h (_nl_locale_subfreeres): New prototype.
|
||||
* locale/setlocale.c (free_category): Add __libc_freeres_fn_section.
|
||||
(free_mem): Rename to _nl_locale_subfreeres.
|
||||
* iconv/gconv_db.c: Include locale/localeinfo.h.
|
||||
(free_derivation, free_modules_db): Add __libc_freeres_fn_section.
|
||||
(free_mem): Call _nl_locale_subfreeres.
|
||||
* iconv/gconv_dl.c (do_release_all): Add __libc_freeres_fn_section.
|
||||
|
||||
2004-08-04 Roland McGrath <roland@frob.com>
|
||||
|
||||
* Makeconfig ($(common-objpfx)config.status):
|
||||
|
@ -575,16 +575,17 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
}
|
||||
#endif
|
||||
|
||||
if (inet_pton (AF_INET, name, at->addr) > 0)
|
||||
if (__inet_aton (name, (struct in_addr *) at->addr) != 0)
|
||||
{
|
||||
if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET)
|
||||
at->family = AF_INET;
|
||||
else if (req->ai_flags & AI_V4MAPPED)
|
||||
else if (req->ai_family == AF_INET6 && req->ai_flags & AI_V4MAPPED)
|
||||
{
|
||||
((uint32_t *) at->addr)[3] = *(uint32_t *) at->addr;
|
||||
((uint32_t *) at->addr)[2] = htonl (0xffff);
|
||||
((uint32_t *) at->addr)[1] = 0;
|
||||
((uint32_t *) at->addr)[0] = 0;
|
||||
at->family = AF_INET6;
|
||||
}
|
||||
else
|
||||
return -EAI_ADDRFAMILY;
|
||||
@ -1323,7 +1324,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
|AI_IDN|AI_CANONIDN|AI_IDN_ALLOW_UNASSIGNED
|
||||
|AI_IDN_USE_STD3_ASCII_RULES
|
||||
#endif
|
||||
|AI_ALL))
|
||||
|AI_NUMERICSERV|AI_ALL))
|
||||
return EAI_BADFLAGS;
|
||||
|
||||
if ((hints->ai_flags & AI_CANONNAME) && name == NULL)
|
||||
@ -1339,7 +1340,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
__check_pf (&seen_ipv4, &seen_ipv6);
|
||||
|
||||
/* Now make a decision on what we return, if anything. */
|
||||
if (hints->ai_family == PF_UNSPEC)
|
||||
if (hints->ai_family == PF_UNSPEC && (seen_ipv4 || seen_ipv6))
|
||||
{
|
||||
/* If we haven't seen both IPv4 and IPv6 interfaces we can
|
||||
narrow down the search. */
|
||||
@ -1361,8 +1362,13 @@ getaddrinfo (const char *name, const char *service,
|
||||
char *c;
|
||||
gaih_service.name = service;
|
||||
gaih_service.num = strtoul (gaih_service.name, &c, 10);
|
||||
if (*c)
|
||||
gaih_service.num = -1;
|
||||
if (*c != '\0')
|
||||
{
|
||||
if (hints->ai_flags & AI_NUMERICSERV)
|
||||
return EAI_NONAME;
|
||||
|
||||
gaih_service.num = -1;
|
||||
}
|
||||
else
|
||||
/* Can't specify a numerical socket unless a protocol family was
|
||||
given. */
|
||||
@ -1467,8 +1473,6 @@ getaddrinfo (const char *name, const char *service,
|
||||
if (pai == NULL && last_i == 0)
|
||||
return 0;
|
||||
|
||||
freeaddrinfo (p);
|
||||
|
||||
return last_i ? -(last_i & GAIH_EAI) : EAI_NONAME;
|
||||
}
|
||||
libc_hidden_def (getaddrinfo)
|
||||
|
Loading…
Reference in New Issue
Block a user