From 922809a2e3dbb92b6faae17523d055783295cbdc Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 22 Mar 2000 18:14:48 +0000 Subject: Update. 2000-03-22 Ulrich Drepper * inet/getnameinfo.c (getnameinfo): Check that addrlen value is large enough. Patch by YOSHIFUJI Hideaki . 2000-03-22 Andreas Jaeger * sysdeps/unix/sysv/linux/powerpc/bits/mman.h (MADV_*): Add flags from latest Linux kernel. --- inet/getnameinfo.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'inet/getnameinfo.c') diff --git a/inet/getnameinfo.c b/inet/getnameinfo.c index 709f9ecbfe..9a0709229e 100644 --- a/inet/getnameinfo.c +++ b/inet/getnameinfo.c @@ -172,8 +172,20 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host, int herrno; char *tmpbuf = alloca (tmpbuflen); struct hostent th; + socklen_t min_addrlen = 0; - if (sa == NULL) + if (sa == NULL || addrlen < sizeof (sa_family_t)) + return -1; + + switch (sa->sa_family) + { + case AF_LOCAL: + min_addrlen = (socklen_t) (((struct sockaddr_un *) NULL)->sun_path); + break; + default: + min_addrlen = __libc_sa_len (sa->sa_family); + } + if (addrlen < min_addrlen) return -1; if (host != NULL && hostlen > 0) -- cgit v1.2.3