Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: REM Cost Reform

...

Attempting to destroy an array of polymorphic objects through the incorrect static type is undefined behavior. In practice, potential consequences include abnormal program execution and memory leaks.

Rule

Severity

Likelihood

Detectable

RepairableRemediation Cost

Priority

Level

EXP51-CPP

Low

Unlikely

No

NoMedium

P2P1

L3

Automated Detection

Tool

Version

Checker

Description

Clang

Include Page
Clang_V
Clang_V
-analyzer-checker=cplusplusChecked with clang -cc1 or (preferably) scan-build
CodeSonar
Include Page
CodeSonar_V
CodeSonar_V

ALLOC.TM

Type Mismatch

Helix QAC

Include Page
Helix QAC_V
Helix QAC_V

C++3166
Klocwork
Include Page
Klocwork_V
Klocwork_V
CERT.EXPR.DELETE_ARR.BASE_PTR
MISRA.CATCH.WRONGORD 

Parasoft C/C++test
Include Page
Parasoft_V
Parasoft_V
CERT_CPP-EXP51-a

Do not treat arrays polymorphically

Parasoft Insure++

Runtime detection
Polyspace Bug Finder

Include Page
Polyspace Bug Finder_V
Polyspace Bug Finder_V

CERT C++: EXP51-CPPChecks for delete operator used to destroy downcast object of different type.

Related Vulnerabilities

Search for other vulnerabilities resulting from the violation of this rule on the CERT website.

...