...
Object slicing can result in abnormal program execution. This generally is not a problem for exceptions, but it can lead to unexpected behavior depending on the assumptions made by the exception handler.
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
ERR61-CPP | Low | Unlikely | Low | P3 | L3 |
Automated Detection
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
Astrée |
| catch-class-by-value | Fully checked | ||||||
Axivion Bauhaus Suite |
| CertC++-ERR61 | |||||||
|
| Checked by clang-tidy ; also checks for VOID ERR09-CPP. Throw anonymous temporaries by default | |||||||
CodeSonar |
| LANG.STRUCT.EXCP.CATCH LANG.STRUCT.EXCP.THROW | Use of catch Use of throw | ||||||
Helix QAC |
| C++4031 | |||||||
Klocwork |
| MISRA.CATCH.BY_VALUE | |||||||
LDRA tool suite |
| 455 S | Fully implemented | ||||||
Parasoft C/C++test |
| CERT_CPP-ERR61-a | A class type exception shall always be caught by reference | ||||||
Polyspace Bug Finder |
| CERT C++: ERR61-CPP | Checks for exception object initialized by copy in catch statement (rule fully covered) | ||||||
PVS-Studio |
| V746, V816 | |||||||
RuleChecker |
| catch-class-by-value | Fully checked | ||||||
SonarQube C/C++ Plugin |
| S1044 |
Related Vulnerabilities
Search for other vulnerabilities resulting from the violation of this rule on the CERT website.
...
This rule is a subset of OOP51-CPP. Do not slice derived objects.
Bibliography
[ISO/IEC 14882-2014] | Subclause 3.9, "Types" |
[MISRA |
2008] | Rule 15-3-5 |
...
...