Don't allow mod by 0 in ExpressionMod::evaluateInternal()

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Done
    • Priority: Major - P3
    • 3.3.6
    • Affects Version/s: None
    • Component/s: Aggregation Framework
    • None
    • Fully Compatible
    • ALL
    • Query 14 (05/13/16)
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Fix 2 potential mod by 0 cases in ExpressionMod::evaluateInternal()

      Issue 1
      Division or modulo by zero results in undefined behavior.

      Defect 98886 (STATIC_C)
      Checker DIVIDE_BY_ZERO (subcategory none)
      File: /src/mongo/db/pipeline/expression.cpp
      Function mongo::ExpressionMod::evaluateInternal(mongo::Variables *) const
      /src/mongo/db/pipeline/expression.cpp, line: 1996
      Assigning: "rightInt" = "rhs.coerceToInt()". The value of "rightInt" is now 0.

                  int rightInt = rhs.coerceToInt();
      

      /src/mongo/db/pipeline/expression.cpp, line: 1997
      In expression "left % rightInt", modulo by expression "rightInt" which may be zero has undefined behavior.

                  return Value(left % rightInt);
      

      Issue 2
      Division or modulo by zero results in undefined behavior.

      Defect 98887 (STATIC_C)
      Checker DIVIDE_BY_ZERO (subcategory none)
      File: /src/mongo/db/pipeline/expression.cpp
      Function mongo::ExpressionMod::evaluateInternal(mongo::Variables *) const
      /src/mongo/db/pipeline/expression.cpp, line: 1990
      Assigning: "rightLong" = "rhs.coerceToLong()". The value of "rightLong" is now 0.

                      long long rightLong = rhs.coerceToLong();
      

      /src/mongo/db/pipeline/expression.cpp, line: 1991
      In expression "left % rightLong", modulo by expression "rightLong" which may be zero has undefined behavior.

                      return Value(left % rightLong);
      

            Assignee:
            James Wahlin
            Reporter:
            Coverity Collector User
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: