gcc/libstdc++-v3
Jonathan Wakely e7e0eeeb6e libstdc++: Avoid 32-bit time_t overflows in futex calls
The existing code doesn't check whether the chrono::seconds value is out
of range of time_t. When using a timeout before the epoch (with a
negative value) subtracting the current time (as time_t) and then
assigning it to a time_t can overflow to a large positive value. This
means that we end up waiting several years even though the specific
timeout was in the distant past.

We do have a check for negative timeouts, but that happens after the
conversion to time_t so happens after the overflow.

The conversion to a relative timeout is done in two places, so this
factors it into a new function and adds the overflow checks there.

libstdc++-v3/ChangeLog:

	* src/c++11/futex.cc (relative_timespec): New function to
	create relative time from two absolute times.
	(__atomic_futex_unsigned_base::_M_futex_wait_until)
	(__atomic_futex_unsigned_base::_M_futex_wait_until_steady):
	Use relative_timespec.
2020-11-13 17:19:12 +00:00
..
config libstdc++: Avoid bad_alloc exceptions when changing locales 2020-11-10 20:33:29 +00:00
doc libstdc++: Document istreambuf_iterator base class change [PR 92285] 2020-11-04 12:46:52 +00:00
include libstdc++: Optimise std::future::wait_for and fix futex polling 2020-11-12 23:47:04 +00:00
libsupc++ libstdc++: Use 'inline' consistently in std::exception_ptr [PR 97729] 2020-11-09 14:28:38 +00:00
po
python
scripts
src libstdc++: Avoid 32-bit time_t overflows in futex calls 2020-11-13 17:19:12 +00:00
testsuite libstdc++: Add -pthread options to std::future polling test 2020-11-13 11:01:24 +00:00
acinclude.m4 libstdc++: Exclude cygwin and mingw from linker relro support 2020-11-11 15:36:05 +00:00
aclocal.m4
ChangeLog Daily bump. 2020-11-13 00:16:35 +00:00
ChangeLog-1998
ChangeLog-1999
ChangeLog-2000
ChangeLog-2001
ChangeLog-2002
ChangeLog-2003
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-2016
ChangeLog-2017
ChangeLog-2018
ChangeLog-2019
config.h.in
configure libstdc++: Exclude cygwin and mingw from linker relro support 2020-11-11 15:36:05 +00:00
configure.ac
configure.host Scope libstdc++ configuration for vxworks to all versions 2020-10-22 16:40:57 +00:00
crossconfig.m4 Scope libstdc++ configuration for vxworks to all versions 2020-10-22 16:40:57 +00:00
fragment.am
linkage.m4
Makefile.am
Makefile.in
README

file: libstdc++-v3/README

New users may wish to point their web browsers to the file
index.html in the 'doc/html' subdirectory.  It contains brief
building instructions and notes on how to configure the library in
interesting ways.