From: Ulrich Drepper Date: Wed, 22 Mar 2000 18:14:48 +0000 (+0000) Subject: Update. X-Git-Tag: cvs/glibc_2-1-91~816 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=922809a2e3dbb92b6faae17523d055783295cbdc;p=thirdparty%2Fglibc.git 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. --- diff --git a/ChangeLog b/ChangeLog index 5d8d0363730..4aabd417f76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +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. + 2000-03-21 Andreas Jaeger * Versions.def: Add version 2.1.4. diff --git a/inet/getnameinfo.c b/inet/getnameinfo.c index 709f9ecbfe5..9a0709229ee 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)