|
Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6 |
|
| #
e1657e32 |
| 28-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[asan] Add unaligned double ended container support
Differential Revision: https://reviews.llvm.org/D138771
|
| #
bc0ae483 |
| 28-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Speedup the test
|
| #
4880a48a |
| 28-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[NFC][asan] Fix typo in names
|
| #
204cd4e2 |
| 27-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Double ended version of TestContainer
|
| #
09ec58c8 |
| 27-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Simplify a few expressions
|
| #
8226ec0e |
| 27-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Check find_bad_address test
For consistency with future TestDoubleEndedContainer, where calculation of the expected bad address is complicated.
|
| #
ad663be7 |
| 27-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Deduplicate code
|
| #
1c5ad6d2 |
| 20-Nov-2022 |
Advenam Tacet <advenam.tacet@trailofbits.com> |
[1a/3][ASan][compiler-rt] API for double ended containers
This revision is a part of a series of patches extending AddressSanitizer C++ container overflow detection capabilities by adding annotation
[1a/3][ASan][compiler-rt] API for double ended containers
This revision is a part of a series of patches extending AddressSanitizer C++ container overflow detection capabilities by adding annotations, similar to those existing in std::vector, to std::string and std::deque collections. These changes allow ASan to detect cases when the instrumented program accesses memory which is internally allocated by the collection but is still not in-use (accesses before or after the stored elements for std::deque, or between the size and capacity bounds for std::string).
The motivation for the research and those changes was a bug, found by Trail of Bits, in a real code where an out-of-bounds read could happen as two strings were compared via a std::equals function that took iter1_begin, iter1_end, iter2_begin iterators (with a custom comparison function). When object iter1 was longer than iter2, read out-of-bounds on iter2 could happen. Container sanitization would detect it.
This revision adds a new compiler-rt ASan sanitization API function sanitizer_annotate_double_ended_contiguous_container necessary to sanitize/annotate double ended contiguous containers. Note that that function annotates a single contiguous memory buffer (for example the std::deque's internal chunk). Such containers have the beginning of allocated memory block, beginning of the container in-use data, end of the container's in-use data and the end of the allocated memory block. This also adds a new API function to verify if a double ended contiguous container is correctly annotated (__sanitizer_verify_double_ended_contiguous_container).
Since we do not modify the ASan's shadow memory encoding values, the capability of sanitizing/annotating a prefix of the internal contiguous memory buffer is limited – up to SHADOW_GRANULARITY-1 bytes may not be poisoned before the container's in-use data. This can cause false negatives (situations when ASan will not detect memory corruption in those areas).
On the other hand, API function interfaces are designed to work even if this caveat would not exist. Therefore implementations using those functions will poison every byte correctly, if only ASan (and compiler-rt) is extended to support it. In other words, if ASan was modified to support annotating/poisoning of objects lying on addresses unaligned to SHADOW_GRANULARITY (so e.g. prefixes of those blocks), which would require changing its shadow memory encoding, this would not require any changes in the libcxx std::string/deque code which is added in further commits of this patch series.
If you have any questions, please email: advenam.tacet@trailofbits.com disconnect3d@trailofbits.com
Differential Revision: https://reviews.llvm.org/D132090
show more ...
|
| #
16d3c0c7 |
| 20-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Limit scope of the var
|
| #
27998d91 |
| 20-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Rename variables for less confusion
|
| #
e37f8e58 |
| 19-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Simplify __sanitizer_verify_contiguous_container test
|
| #
4b4250c7 |
| 19-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Simplify loops in test
|
| #
f0fbf51a |
| 19-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[test][asan] Simplify test
We don't need to iterate off_end, just need to check a granule after the end.
|
| #
796b1bdd |
| 18-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[NFC][asan] Rename variables in test
|
| #
d3139730 |
| 18-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[asan] Simplify the test
|
| #
e7376adb |
| 17-Nov-2022 |
Vitaly Buka <vitalybuka@google.com> |
[NFC][asan] clang-format the test
|
|
Revision tags: llvmorg-15.0.5, llvmorg-15.0.4 |
|
| #
dd1b7b79 |
| 28-Oct-2022 |
Advenam Tacet <advenam.tacet@trailofbits.com> |
[1b/3][ASan][compiler-rt] API for annotating objects memory
This revision is a part of a series of patches extending AddressSanitizer C++ container overflow detection capabilities by adding annotati
[1b/3][ASan][compiler-rt] API for annotating objects memory
This revision is a part of a series of patches extending AddressSanitizer C++ container overflow detection capabilities by adding annotations, similar to those existing in std::vector, to std::string and std::deque collections. These changes allow ASan to detect cases when the instrumented program accesses memory which is internally allocated by the collection but is still not in-use (accesses before or after the stored elements for std::deque, or between the size and capacity bounds for std::string).
The motivation for the research and those changes was a bug, found by Trail of Bits, in a real code where an out-of-bounds read could happen as two strings were compared via a std::equals function that took iter1_begin, iter1_end, iter2_begin iterators (with a custom comparison function). When object iter1 was longer than iter2, read out-of-bounds on iter2 could happen. Container sanitization would detect it.
This revision extends a compiler-rt ASan sanitization API function sanitizer_annotate_contiguous_container used to sanitize/annotate containers like std::vector to support different allocators and situations when granules are shared between objects. Those changes are necessary to support annotating objects' self memory (in contrast to annotating memory allocated by an object) like short std::basic_string (with short string optimization). That also allows use of non-standard memory allocators, as alignment requirement is no longer necessary.
This also updates an API function to verify if a double ended contiguous container is correctly annotated (__sanitizer_verify_contiguous_container).
If you have any questions, please email: advenam.tacet@trailofbits.com disconnect3d@trailofbits.com
Reviewed By: #sanitizers, vitalybuka
Differential Revision: https://reviews.llvm.org/D132522
show more ...
|
|
Revision tags: llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2 |
|
| #
4b4437c0 |
| 20-Apr-2022 |
Vitaly Buka <vitalybuka@google.com> |
[asan] Enable detect_stack_use_after_return=1 by default
By default -fsanitize=address already compiles with this check, why not use it. For compatibly it can be disabled with env ASAN_OPTIONS=detec
[asan] Enable detect_stack_use_after_return=1 by default
By default -fsanitize=address already compiles with this check, why not use it. For compatibly it can be disabled with env ASAN_OPTIONS=detect_stack_use_after_return=0.
Reviewed By: eugenis, kda, #sanitizers, hans
Differential Revision: https://reviews.llvm.org/D124057
show more ...
|
|
Revision tags: llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3 |
|
| #
a1e7e401 |
| 04-Sep-2021 |
Kazuaki Ishizaki <ishizaki@jp.ibm.com> |
[compiler-rt] NFC: Fix trivial typo
Reviewed By: xgupta
Differential Revision: https://reviews.llvm.org/D77457
|
|
Revision tags: llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
| #
c4992bf5 |
| 16-Jun-2021 |
Kevin Athey <kda@google.com> |
[NFC][sanitizer] Remove calls to __asan_get_current_fake_stack
Unnecessary with -fsanitize-address-use-after-return=never.
for issue: https://github.com/google/sanitizers/issues/1394
Reviewed By:
[NFC][sanitizer] Remove calls to __asan_get_current_fake_stack
Unnecessary with -fsanitize-address-use-after-return=never.
for issue: https://github.com/google/sanitizers/issues/1394
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D104154
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1, llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3, llvmorg-9.0.0-rc2 |
|
| #
673dc3d4 |
| 05-Aug-2019 |
Nico Weber <nicolasweber@gmx.de> |
compiler-rt: Rename cc files below test/asan to cpp
See r367803 and similar other changes.
llvm-svn: 367887
|