[all-commits] [llvm/llvm-project] 0a35ac: [ASan][libc++] Annotating std::deque with all allo...

Tacet via All-commits all-commits at lists.llvm.org
Thu Jul 20 01:17:48 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0a35ac6c2e0cb0160ca2e6cc11644c263692a46d
      https://github.com/llvm/llvm-project/commit/0a35ac6c2e0cb0160ca2e6cc11644c263692a46d
  Author: Advenam Tacet <advenam.tacet at trailofbits.com>
  Date:   2023-07-20 (Thu, 20 Jul 2023)

  Changed paths:
    M libcxx/include/deque
    M libcxx/test/libcxx/containers/sequences/deque/asan.pass.cpp
    A libcxx/test/libcxx/containers/sequences/deque/asan_turning_off.pass.cpp

  Log Message:
  -----------
  [ASan][libc++] Annotating std::deque with all allocators

This patch is part of our efforts to support container annotations with (almost) every allocator.
Annotating std::deque with default allocator is implemented in D132092.

Support in ASan API exests since rG1c5ad6d2c01294a0decde43a88e9c27d7437d157.

The motivation for a 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.

If you have any questions, please email:
- advenam.tacet at trailofbits.com
- disconnect3d at trailofbits.com

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D146815




More information about the All-commits mailing list