Skip to content
Snippets Groups Projects
  1. Mar 20, 2017
  2. Mar 14, 2017
    • Vedant Kumar's avatar
      [ubsan] Add a nullability sanitizer · 60b8b697
      Vedant Kumar authored
      Teach UBSan to detect when a value with the _Nonnull type annotation
      assumes a null value. Call expressions, initializers, assignments, and
      return statements are all checked.
      
      Because _Nonnull does not affect IRGen, the new checks are disabled by
      default. The new driver flags are:
      
        -fsanitize=nullability-arg      (_Nonnull violation in call)
        -fsanitize=nullability-assign   (_Nonnull violation in assignment)
        -fsanitize=nullability-return   (_Nonnull violation in return stmt)
        -fsanitize=nullability          (all of the above)
      
      This patch builds on top of UBSan's existing support for detecting
      violations of the nonnull attributes ('nonnull' and 'returns_nonnull'),
      and relies on the compiler-rt support for those checks. Eventually we
      will need to update the diagnostic messages in compiler-rt (there are
      FIXME's for this, which will be addressed in a follow-up).
      
      One point of note is that the nullability-return check is only allowed
      to kick in if all arguments to the function satisfy their nullability
      preconditions. This makes it necessary to emit some null checks in the
      function body itself.
      
      Testing: check-clang and check-ubsan. I also built some Apple ObjC
      frameworks with an asserts-enabled compiler, and verified that we get
      valid reports.
      
      Differential Revision: https://reviews.llvm.org/D30762
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@297700 91177308-0d34-0410-b5e6-96231b3b80d8
      60b8b697
  3. Feb 27, 2017
  4. Sep 20, 2016
  5. May 12, 2016
  6. Apr 26, 2016
  7. Apr 25, 2016
  8. Jan 30, 2016
  9. Dec 05, 2015
  10. Dec 04, 2015
Loading