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.
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.
zerodiv
Thanks for reporting, ticket is here: https://trac.cppcheck.net/ticket/15002
Log in to post a comment.
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.0Affected checker
Cppcheck zerodivMinimal reproducer
Reproduction command
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.Thanks for reporting, ticket is here: https://trac.cppcheck.net/ticket/15002