The inline and library functions that the CMSG_NXTHDR macro may expand
to increment the pointer to the header before checking the stride of
the increment against available space. Since C only allows incrementing
pointers to one past the end of an array, the increment must be done
after a length check. This commit fixes that and includes a regression
test for CMSG_FIRSTHDR and CMSG_NXTHDR.
The Linux, Hurd, and generic headers are all changed.
Tested on Linux on armv7hl, i686, x86_64, aarch64, ppc64le, and s390x.
[BZ #28846]
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
I used these shell commands:
../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright
(cd ../glibc && git commit -am"[this commit message]")
and then ignored the output, which consisted lines saying "FOO: warning:
copyright statement not found" for each of 7061 files FOO.
I then removed trailing white space from math/tgmath.h,
support/tst-support-open-dev-null-range.c, and
sysdeps/x86_64/multiarch/strlen-vec.S, to work around the following
obscure pre-commit check failure diagnostics from Savannah. I don't
know why I run into these diagnostics whereas others evidently do not.
remote: *** 912-#endif
remote: *** 913:
remote: *** 914-
remote: *** error: lines with trailing whitespace found
...
remote: *** error: sysdeps/unix/sysv/linux/statx_cp.c: trailing lines
I used these shell commands:
../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright
(cd ../glibc && git commit -am"[this commit message]")
and then ignored the output, which consisted lines saying "FOO: warning:
copyright statement not found" for each of 6694 files FOO.
I then removed trailing white space from benchtests/bench-pthread-locks.c
and iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c, to work around this
diagnostic from Savannah:
remote: *** pre-commit check failed ...
remote: *** error: lines with trailing whitespace found
remote: error: hook declined to update refs/heads/master
Among other localplt test failures when building with -Os, there are
libc.so PLT references for __cmsg_nxthdr. This is a simple case of a
function that is inlined for -O2 but not for -Os; this patch adds
libc_hidden_proto / libc_hidden_def for it to avoid a localplt failure
even when it is not inlined.
Tested for x86_64 (both that it removes this particular localplt
failure for -Os - but other such failures remain so the bug can't yet
be closed - and that the testsuite continues to pass without -Os).
[BZ #15105]
* include/sys/socket.h [!_ISOMAC] (__cmsg_nxthdr): Use
libc_hidden_proto.
* sysdeps/unix/sysv/linux/cmsg_nxthdr.c (__cmsg_nxthdr): Use
libc_hidden_def.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
* sysdeps/unix/bsd/poll.c (__poll): Add code to extend sets if any
passed file descriptor exceeds the size determined by
getdtablesize.
* sysdeps/unix/sysv/linux/cmsg_nxthdr.c (__cmsg_nxthdr): Update
from inline version in bits/socket.h.
* sysdeps/unix/sysv/linux/bits/socket.h: Define __cmsg_nxthdr as
inline function only is __USE_EXTERN_INLINES is defined.
* time/strftime.c (my_strftime): Make code a bit clearer.
Patch by Paul Eggert <eggert@twinsun.com>.
by removing SIG_IGN handler for SIGCHLD if necessary.
1997-02-02 00:39 Ulrich Drepper <drepper@cygnus.com>
* dirent/dirent.h: Add description _DIRENT_HAVE_D_TYPE.
1997-02-01 17:04 Philip Blundell <pjb27@cam.ac.uk>
* inet/netinet/ip.h (MAX_IPOPTLEN): Add definition.
1997-02-01 17:00 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/socketbits.h: Add definition of cmsghdr
structure plus related macros.
* sysdeps/unix/sysv/linux/cmsg_nxthdr.c: New file.
* sysdeps/unix/sysv/linux/Makefile [$(subdir)=socket]
(sysdep_routines): Add cmsg_nxthdr.
* sysdeps/unix/sysv/linux/Dist: Add cmsg_nxthdr.c.
Suggested by Philip Blundell <pjb27@cam.ac.uk>.
1997-02-01 12:34 Ulrich Drepper <drepper@cygnus.com>
* time/strftime.c: Define _strftime_copytm without protecting arguments
which breaks the definition.
1997-02-01 03:31 Thorsten Kukuk <kukuk@weber.uni-paderborn.de>
* nis/rpcsvc/yp_prot.h: Move definition of yppushresp_xfr after
definition of type for element.
1997-02-01 03:28 Philip Blundell <pjb27@cam.ac.uk>
* sydsdeps/unix/sysv/linux/netinet/in.h: Add IPv6 related IPPROTO_*
constants.
1997-02-01 03:09 H.J. Lu <hjl@lucon.org>
* Makefile: Pass PARALLELMFLAGS to sub-makes.
* Makefile.in: Mention PARALLELMFLAGS and pass to main Makefile.
1997-01-31 Paul Eggert <eggert@twinsun.com>
* time/mktime.c (HAVE_LIMITS_H, HAVE_LOCALTIME_R, STDC_HEADERS):
Define if _LIBC is defined.
<limits.h>: Include if HAVE_LIMITS_H instead of if
__STDC__ || __GNU_LIBRARY__ || STDC_HEADERS.
<stdlib.h>: Similarly, include if STDC_HEADERS.
(localtime_r): Redo #ifdef to make it clear that glibc has
localtime_r now.
1997-02-29 20:08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sunrpc/Makefile ($(objpfx)rpcsvc/%.h, $(objpfx)x%.c): Use stamp
file to avoid unnecessary recompilation.
1997-01-29 19:33 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makefile: Set install-others, not install_others.
(before-compile): Use += to preserve previous value.
($(inst_includedir)/gnu/lib-names.h): Remove obsolete comment and
fix dependency name.
($(objpfx)lib-names.h): Remove rule.
* Makeconfig ($(common-objpfx)gnu/lib-names.h): Generate it here,
with correct name, using an intermediate stamp file.
(common-generated): Add gnu/lib-names.h.
(before-compile): Add $(common-objpfx)gnu/lib-names.h.
1997-01-30 18:29 Richard Henderson <richard@atheist.tamu.edu>
* malloc/malloc.c (MAGICBYTE): Use cast to size_t instead of unsigned
to prevent warnings on 64 bit systems.
Reported by Paul Wouters <paul@xtdnet.nl>.
* sysdeps/alpha/dl-machine.h: Revert check for broken gas. By default
we assume it works.