...
Using arrays polymorphically can result in memory corruption, which could lead to an attacker being able to execute arbitrary code.
Rule | Severity | Likelihood |
|---|
Detectable | Repairable | Priority | Level |
|---|---|---|---|
CTR56-CPP | High | Likely |
No | No | P9 | L2 |
Automated Detection
Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Axivion Bauhaus Suite |
| CertC++-CTR56 | |||||||
| CodeSonar |
| LANG.STRUCT.PARITH | Pointer Arithmetic | ||||||
| Helix QAC |
| C++3073 | |||||||
| Parasoft C/C++test |
|
|
|
CERT_CPP-CTR56-a | Don't treat arrays polymorphically | ||||||||
| LDRA tool suite |
| 567 S | Enhanced Enforcement |
| Polyspace Bug Finder |
| CERT C++: CTR56-CPP | Checks for pointer arithmetic on polymorphic object (rule fully covered) | ||||||
| PVS-Studio |
|
|
|
| V777 |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
Bibliography
| [ISO/IEC 14882-2014] | Subclause 5.7, "Additive Operators" |
| [Lockheed Martin 2005] | AV Rule 96, "Arrays shall not be treated polymorphically" |
| [Meyers 1996] | Item 3, "Never Treat Arrays Polymorphically" |
| [Stroustrup 2006] | "What's Wrong with Arrays?" |
| [Sutter 2004] | Item 100, "Don't Treat Arrays Polymorphically" |
...
...