If present, use GetSystemTimePreciseAsFileTime instead of
GetSystemTimeAsFileTime. Available since Windows 8.
(cherry picked from commit f0b3160f8ce7fbd411493dcd023f562f4f9d17ee)
Per the POSIX definition of select():
http://pubs.opengroup.org/onlinepubs/009696699/functions/pselect.html
"Upon successful completion, the select() function may modify the object
pointed to by the timout argument."
If "struct timeval" pointer is a "static const", it could potentially
be allocated in a RO text segment. The kernel would then try to copy
back the modified value (with the time remaining) into a read-only
address and SEGV.
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
Closes: #614
(cherry picked from commit 33baa4e59fbf9432d77a19c6b2b45402580b79a5)
As pointed in https://github.com/libevent/libevent/pull/417#issuecomment-267860738
"code is unsafe because in evutil_date_rfc1123() the pointer to the
automatic variable struct tm cur is used outside the scope it defined."
Checked with `clang -fsanitize=address -fsanitize-address-use-after-scope`
and test that call evutil_date_rfc1123() with tm==NULL