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] 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 10, 2011
  4. 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
  5. Nov 05, 2011
  6. Nov 01, 2011
  7. Oct 28, 2011
  8. Oct 26, 2011
  9. Oct 25, 2011
  10. Oct 24, 2011
  11. Oct 19, 2011
    • Anna Zaks's avatar
      [analyzer] Make NodeBuilder and Pred node loosely coupled · a99b41f3
      Anna Zaks authored
      NodeBuilder should not assume it's dealing with a single predecessor. Remove predecessor getters. Modify the BranchNodeBuilder to not be responsible for doing auto-transitions (which depend on a predecessor).
      
      llvm-svn: 142453
      a99b41f3
    • Anna Zaks's avatar
      [analyzer] Remove dead code. · e83ddcc4
      Anna Zaks authored
      ExprEngineBuilders is not used.
      
      llvm-svn: 142450
      e83ddcc4
    • Anna Zaks's avatar
      [analyzer] Modularize builder use in processBranch. · 6d285c58
      Anna Zaks authored
      Take advantage of the new builders for branch processing. As part of this change pass generic NodeBuilder (instead of BranchNodeBuilder) to the BranchCondition callback and remove the unused methods form BranchBuilder.
      
      llvm-svn: 142448
      6d285c58
    • Anna Zaks's avatar
      ce5e97ef
    • Anna Zaks's avatar
      [analyzer] Node Builder refactoring: Introduce a simple Node Builder... · fc0189aa
      Anna Zaks authored
      [analyzer] Node Builder refactoring: Introduce a simple Node Builder responsible for generating the node frontier.
      
      Currently we have a bunch of different node builders which provide some common
      functionality but are difficult to refactor. Each builder generates nodes of
      different kinds and calculates the frontier nodes, which should be propagated
      to the next step (after the builder dies).
      
      Introduce a new NodeBuilder which provides very basic node generation facilities
      but takes care of the second problem. The idea is that all the other builders
      will eventually use it. Use this builder in CheckerContext instead of
      StmtNodeBuilder (the way the frontier is propagated to the StmtBuilder
      is a hack and will be removed later on).
      
      llvm-svn: 142443
      fc0189aa
  12. Oct 14, 2011
  13. Oct 11, 2011
  14. Oct 10, 2011
    • Richard Smith's avatar
      Constant expression evaluation refactoring: · caf3390d
      Richard Smith authored
       - Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions,
         and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert
         behaviour.
       - Factor out evaluation of bitfield bit widths.
       - Fix a few places which would evaluate an expression twice: once to determine
         whether it is a constant expression, then again to get the value.
      
      llvm-svn: 141561
      caf3390d
  15. Oct 08, 2011
  16. Oct 07, 2011
  17. Oct 06, 2011
  18. Oct 05, 2011
  19. Oct 04, 2011
Loading