Menu

FALSE POSITIVE: `zerodiv` reports inside an infeasible pointer equality branch

Rodri
4 days ago
4 days ago
  • Rodri

    Rodri - 4 days ago

    Hi, I found a false positive in Cppcheck 2.21.0 when a division is guarded by an infeasible pointer equality.

    Affected tool

    Cppcheck 2.21.0

    Affected checker

    Cppcheck zerodiv

    Minimal reproducer

    int divide_on_impossible_pointer_equality(char *pointer) {
      int zero = 0;
      if (pointer == pointer + 1)
        return 1 / zero;
      return 0;
    }
    

    Reproduction command

    cppcheck --version
    cppcheck --enable=warning --std=c11 --checkers-report=checkers.txt --template='{file}:{line}:{column}: [{id}] {message}' cppcheck-zerodiv-fp-impossible-pointer-equality.c
    

    Current behavior

    Cppcheck reports cppcheck-zerodiv-fp-impossible-pointer-equality.c:4:14: [zerodiv] Division by zero.

    Expected behavior

    Cppcheck should not report zerodiv. In a defined execution, a pointer cannot equal the pointer to its next element, so the division is unreachable.

     
  • CHR

    CHR - 4 days ago

    Thanks for reporting, ticket is here: https://trac.cppcheck.net/ticket/15002

     

Log in to post a comment.