Fixing review comments · llvm/llvm-project@91ac5ed (original) (raw)

`@@ -34,7 +34,7 @@ class DivZeroChecker : public Checker<check::PreStmt> {

`

34

34

``

35

35

`public:

`

36

36

`/// This checker class implements multiple user facing checker

`

37

``

`-

enum CheckKind { CK_DivZeroChecker, CK_TaintedDivChecker, CK_NumCheckKinds };

`

``

37

`+

enum CheckKind { CK_DivideZero, CK_TaintedDivChecker, CK_NumCheckKinds };

`

38

38

`bool ChecksEnabled[CK_NumCheckKinds] = {false};

`

39

39

` CheckerNameRef CheckNames[CK_NumCheckKinds];

`

40

40

`mutable std::unique_ptr BugTypes[CK_NumCheckKinds];

`

`@@ -52,14 +52,14 @@ static const Expr *getDenomExpr(const ExplodedNode *N) {

`

52

52

``

53

53

`void DivZeroChecker::reportBug(StringRef Msg, ProgramStateRef StateZero,

`

54

54

` CheckerContext &C) const {

`

55

``

`-

if (!ChecksEnabled[CK_DivZeroChecker])

`

``

55

`+

if (!ChecksEnabled[CK_DivideZero])

`

56

56

`return;

`

57

``

`-

if (!BugTypes[CK_DivZeroChecker])

`

58

``

`-

BugTypes[CK_DivZeroChecker].reset(

`

59

``

`-

new BugType(CheckNames[CK_DivZeroChecker], "Division by zero"));

`

``

57

`+

if (!BugTypes[CK_DivideZero])

`

``

58

`+

BugTypes[CK_DivideZero].reset(

`

``

59

`+

new BugType(CheckNames[CK_DivideZero], "Division by zero"));

`

60

60

`if (ExplodedNode *N = C.generateErrorNode(StateZero)) {

`

61

61

`auto R = std::make_unique(

`

62

``

`-

*BugTypes[CK_DivZeroChecker], Msg, N);

`

``

62

`+

*BugTypes[CK_DivideZero], Msg, N);

`

63

63

`bugreporter::trackExpressionValue(N, getDenomExpr(N), *R);

`

64

64

` C.emitReport(std::move(R));

`

65

65

` }

`

`@@ -74,7 +74,7 @@ void DivZeroChecker::reportTaintBug(

`

74

74

` BugTypes[CK_TaintedDivChecker].reset(

`

75

75

`new BugType(CheckNames[CK_TaintedDivChecker], "Division by zero",

`

76

76

` categories::TaintedData));

`

77

``

`-

if (ExplodedNode *N = C.generateErrorNode(StateZero)) {

`

``

77

`+

if (ExplodedNode *N = C.generateNonFatalErrorNode(StateZero)) {

`

78

78

`auto R = std::make_unique(

`

79

79

` *BugTypes[CK_TaintedDivChecker], Msg, N);

`

80

80

`bugreporter::trackExpressionValue(N, getDenomExpr(N), *R);

`

`@@ -118,7 +118,7 @@ void DivZeroChecker::checkPreStmt(const BinaryOperator *B,

`

118

118

`if ((stateNotZero && stateZero)) {

`

119

119

` std::vector taintedSyms = getTaintedSymbols(C.getState(), *DV);

`

120

120

`if (!taintedSyms.empty()) {

`

121

``

`-

reportTaintBug("Division by a tainted value, possibly zero", stateZero, C,

`

``

121

`+

reportTaintBug("Division by a tainted value, possibly zero", stateNotZero, C,

`

122

122

` taintedSyms);

`

123

123

`return;

`

124

124

` }

`

`@@ -131,9 +131,8 @@ void DivZeroChecker::checkPreStmt(const BinaryOperator *B,

`

131

131

``

132

132

`void ento::registerDivZeroChecker(CheckerManager &mgr) {

`

133

133

` DivZeroChecker *checker = mgr.registerChecker();

`

134

``

`-

;

`

135

``

`-

checker->ChecksEnabled[DivZeroChecker::CK_DivZeroChecker] = true;

`

136

``

`-

checker->CheckNames[DivZeroChecker::CK_DivZeroChecker] =

`

``

134

`+

checker->ChecksEnabled[DivZeroChecker::CK_DivideZero] = true;

`

``

135

`+

checker->CheckNames[DivZeroChecker::CK_DivideZero] =

`

137

136

` mgr.getCurrentCheckerName();

`

138

137

`}

`

139

138

``