mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-18 06:30:05 +00:00
Update.
2000-09-28 Ulrich Drepper <drepper@redhat.com> * sysdeps/posix/getaddrinfo.c (gaih_inet): Handle req->ai_socktype correctly. Reported by Felix von Leitner <leitner@convergence.de>.
This commit is contained in:
parent
f091f00a06
commit
84a4fd3331
@ -1,3 +1,8 @@
|
|||||||
|
2000-09-28 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/posix/getaddrinfo.c (gaih_inet): Handle req->ai_socktype
|
||||||
|
correctly. Reported by Felix von Leitner <leitner@convergence.de>.
|
||||||
|
|
||||||
2000-09-19 H.J. Lu <hjl@gnu.org>
|
2000-09-19 H.J. Lu <hjl@gnu.org>
|
||||||
|
|
||||||
* malloc/malloc.h (__memalign_hook): Fix the parameter order.
|
* malloc/malloc.h (__memalign_hook): Fix the parameter order.
|
||||||
|
@ -30,7 +30,7 @@ tmpnam (char *s)
|
|||||||
/* By using two buffers we manage to be thread safe in the case
|
/* By using two buffers we manage to be thread safe in the case
|
||||||
where S != NULL. */
|
where S != NULL. */
|
||||||
char tmpbufmem[L_tmpnam];
|
char tmpbufmem[L_tmpnam];
|
||||||
char tmpbuf = s ?: tmpbufmem;
|
char *tmpbuf = s ?: tmpbufmem;
|
||||||
|
|
||||||
/* In the following call we use the buffer pointed to by S if
|
/* In the following call we use the buffer pointed to by S if
|
||||||
non-NULL although we don't know the size. But we limit the size
|
non-NULL although we don't know the size. But we limit the size
|
||||||
|
@ -356,6 +356,10 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
|||||||
if ((tp->protoflag & GAI_PROTO_NOSERVICE) != 0)
|
if ((tp->protoflag & GAI_PROTO_NOSERVICE) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (req->ai_socktype != 0
|
||||||
|
&& req->ai_socktype != tp->socktype)
|
||||||
|
continue;
|
||||||
|
|
||||||
newp = (struct gaih_servtuple *)
|
newp = (struct gaih_servtuple *)
|
||||||
__alloca (sizeof (struct gaih_servtuple));
|
__alloca (sizeof (struct gaih_servtuple));
|
||||||
|
|
||||||
@ -382,6 +386,33 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
|||||||
st->port = htons (service->num);
|
st->port = htons (service->num);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (req->ai_socktype || req->ai_protocol)
|
||||||
|
{
|
||||||
|
st = __alloca (sizeof (struct gaih_servtuple));
|
||||||
|
st->next = NULL;
|
||||||
|
st->socktype = req->ai_socktype;
|
||||||
|
st->protocol = req->ai_protocol;
|
||||||
|
st->port = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Neither socket type nor protocol is set. Return all socket types
|
||||||
|
we know about. */
|
||||||
|
struct gaih_servtuple **lastp = &st;
|
||||||
|
for (++tp; tp->name != NULL; ++tp)
|
||||||
|
{
|
||||||
|
struct gaih_servtuple *newp;
|
||||||
|
|
||||||
|
newp = __alloca (sizeof (struct gaih_servtuple));
|
||||||
|
newp->next = NULL;
|
||||||
|
newp->socktype = tp->socktype;
|
||||||
|
newp->protocol = tp->protocol;
|
||||||
|
newp->port = 0;
|
||||||
|
|
||||||
|
*lastp = newp;
|
||||||
|
lastp = &newp->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (name != NULL)
|
if (name != NULL)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user