Skip to content
  1. Nov 16, 2011
    • Anna Zaks's avatar
      [analyzer] Catch the first taint propagation implied buffer overflow. · 20829c90
      Anna Zaks authored
      Change the ArrayBoundCheckerV2 to be more aggressive in reporting buffer overflows
      when the offset is tainted. Previously, we did not report bugs when the state was
      underconstrained (not enough information about the bound to determine if there is
      an overflow) to avoid false positives. However, if we know that the buffer
      offset is tainted - comes in from the user space and can be anything, we should
      report it as a bug.
      
      + The very first example of us catching a taint related bug.
      This is the only example we can currently handle. More to come...
      
      llvm-svn: 144826
      20829c90
    • Anna Zaks's avatar
      [analyzer] Adding generic taint checker. · 5c5bf9b6
      Anna Zaks authored
      The checker is responsible for defining attack surface and adding taint to symbols.
      
      llvm-svn: 144825
      5c5bf9b6
    • Anna Zaks's avatar
      [analyzer] Adding basic building blocks for taint propagation. · ec7dc5c1
      Anna Zaks authored
      TaintTag.h will contain definitions of different taint kinds and their properties.
      TaintManager will be responsible for implementing taint specific operations, storing taint.
      ProgramState will provide API to add/remove taint.
      
      llvm-svn: 144824
      ec7dc5c1
    • Anna Zaks's avatar
      [analyzer] Cleanup: Null->0, comments. · 6b1a9551
      Anna Zaks authored
      llvm-svn: 144823
      6b1a9551
    • Anna Zaks's avatar
      [analyzer] Factor getCalleeName to the checker context. · 3888aa4b
      Anna Zaks authored
      many checkers are trying to get a name of the callee when visiting
      a CallExpr, so provide a convenience API.
      
      llvm-svn: 144820
      3888aa4b
  2. Nov 14, 2011
  3. Nov 11, 2011
  4. Nov 10, 2011
  5. Nov 08, 2011
    • Anna Zaks's avatar
      [analyzer] Remove redundant check from DivZeroChecker · 0d58033b
      Anna Zaks authored
      Analysis by Ted:
      "
          if (stateZero && !stateNotZero) {
      
      is checking to see if:
      
        (A)  "it is possible for the value to be zero"   (stateZero)
      
          AND
      
        (B) "it is not possible for the value to be non-zero"  (!stateNotZero)
      
      That said, the only way for both B to be true AND A to be false is if the path is completely infeasible by the time we reach the divide-by-zero check.  For the most part (all cases?), such cases should automatically get pruned out at branches (i.e., an infeasible path gets dropped), which is the case in our tests.  So the question is whether or not such an infeasible path might not get dropped earlier?  I can't envision any right now.
      
      Indeed, the rest of the checker assumes that if the bug condition didn't fire then 'stateNotZero' is non-NULL:
      
          C.addTransition(stateNotZero);
      "
      
      llvm-svn: 144114
      0d58033b
  6. Nov 07, 2011
  7. Nov 06, 2011
    • John McCall's avatar
      Change the AST representation of operations on Objective-C · fe96e0b6
      John McCall authored
      property references to use a new PseudoObjectExpr
      expression which pairs a syntactic form of the expression
      with a set of semantic expressions implementing it.
      This should significantly reduce the complexity required
      elsewhere in the compiler to deal with these kinds of
      expressions (e.g. IR generation's special l-value kind,
      the static analyzer's Message abstraction), at the lower
      cost of specifically dealing with the odd AST structure
      of these expressions.  It should also greatly simplify
      efforts to implement similar language features in the
      future, most notably Managed C++'s properties and indexed
      properties.
      
      Most of the effort here is in dealing with the various
      clients of the AST.  I've gone ahead and simplified the
      ObjC rewriter's use of properties;  other clients, like
      IR-gen and the static analyzer, have all the old
      complexity *and* all the new complexity, at least
      temporarily.  Many thanks to Ted for writing and advising
      on the necessary changes to the static analyzer.
      
      I've xfailed a small diagnostics regression in the static
      analyzer at Ted's request.
      
      llvm-svn: 143867
      fe96e0b6
  8. Nov 05, 2011
  9. Nov 04, 2011
  10. Nov 02, 2011
  11. Nov 01, 2011
  12. Oct 29, 2011
  13. Oct 28, 2011
  14. Oct 27, 2011
  15. Oct 26, 2011
  16. Oct 25, 2011
  17. Oct 24, 2011
Loading