llvm-project/compiler-rt/lib/msan
Alex Richardson ad294e572b [sanitizers] Fix interception of GLibc regexec
Previously, on GLibc systems, the interceptor was calling __compat_regexec
(regexec@GLIBC_2.2.5) insead of the newer __regexec (regexec@GLIBC_2.3.4).
The __compat_regexec strips the REG_STARTEND flag but does not report an
error if other flags are present. This can result in infinite loops for
programs that use REG_STARTEND to find all matches inside a buffer (since
ignoring REG_STARTEND means that the search always starts from the first
character).

The underlying issue is that GLibc's dlsym(RTLD_NEXT, ...) appears to
always return the oldest versioned symbol instead of the default. This
means it does not match the behaviour of dlsym(RTLD_DEFAULT, ...) or the
behaviour documented in the manpage.

It appears a similar issue was encountered with realpath and worked around
in 77ef78a0a5.

See also https://sourceware.org/bugzilla/show_bug.cgi?id=14932 and
https://sourceware.org/bugzilla/show_bug.cgi?id=1319.

Fixes https://github.com/google/sanitizers/issues/1371

Reviewed By: #sanitizers, vitalybuka, marxin

Differential Revision: https://reviews.llvm.org/D96348
2021-03-08 10:53:55 +00:00
..
tests [sanitizer] Fix msan test build on FreeBSD after 7afdc89c20 2021-01-28 23:54:04 +01:00
.clang-format [sanitizer] Remove unneeded blank lines 2018-05-09 00:44:26 +00:00
CMakeLists.txt [msan] Blacklist __gxx_personality_v0. 2019-10-31 10:22:52 -07:00
msan.cpp [msan] Do not use 77 as exit code, instead use 1 2020-12-10 14:23:12 -08:00
msan.h [MSan] Enable for SystemZ 2020-04-16 12:15:01 +02:00
msan.syms.extra
msan_allocator.cpp [MSan] Enable for SystemZ 2020-04-16 12:15:01 +02:00
msan_allocator.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
msan_blacklist.txt [msan] Blacklist __gxx_personality_v0. 2019-10-31 10:22:52 -07:00
msan_chained_origin_depot.cpp [sanitizer] Move MSan's chained_origin_depot to sanitizer_common 2021-02-11 01:25:56 +00:00
msan_chained_origin_depot.h [sanitizer] Move MSan's chained_origin_depot to sanitizer_common 2021-02-11 01:25:56 +00:00
msan_flags.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
msan_flags.inc Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
msan_interceptors.cpp [sanitizers] Fix interception of GLibc regexec 2021-03-08 10:53:55 +00:00
msan_interface_internal.h [sanitizers] Remove unneeded MaybeCall*DefaultOptions() and nullptr checks 2020-09-08 10:12:05 -07:00
msan_linux.cpp [msan] Delete unused glibc header <execinfo.h> 2020-12-27 21:59:23 -08:00
msan_new_delete.cpp Remove NOLINTs from compiler-rt 2019-09-11 23:19:48 +00:00
msan_origin.h [msan] Fix comment of __msan::Origin::isHeapOrigin 2020-06-14 23:58:49 -07:00
msan_poisoning.cpp [msan] Use non-transparent-huge-page at SetShadow 2021-02-27 00:28:57 +00:00
msan_poisoning.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
msan_report.cpp compiler-rt: Rename .cc file in lib/msan to .cpp 2019-08-01 14:08:18 +00:00
msan_report.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
msan_thread.cpp [NFC] Extract ForEachDVT 2020-12-01 16:15:32 -08:00
msan_thread.h [MSAN] Add fiber switching APIs 2020-08-27 19:30:40 -07:00