-
Notifications
You must be signed in to change notification settings - Fork 11.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[sanitizer] Remove crypt and crypt_r interceptors
From Florian Weimer's D144073 > On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation. > > Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets. Let's remove crypt and crypt_r interceptors (D68431) to fix issues with newer glibc. For older glibc, msan will not know that an uninstrumented crypt_r call initializes `data`, so there is a risk for false positives. However, with some codebase survey, I think crypt_r uses are very few and the call sites typically have a `memset(&data, 0, sizeof(data));` anyway. Fix google/sanitizers#1365 Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432 Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka Differential Revision: https://reviews.llvm.org/D149403
- Loading branch information
Showing
6 changed files
with
0 additions
and
116 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
36 changes: 0 additions & 36 deletions
36
compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
This file was deleted.
Oops, something went wrong.
32 changes: 0 additions & 32 deletions
32
compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp
This file was deleted.
Oops, something went wrong.