...
If no matching handler is found, the function
std::terminate()is called; whether or not the stack is unwound before this call tostd::terminate()is implementation-defined.
The default terminate handler called by std::terminate() calls std::abort(), which abnormally terminates the process. When std::abort() is called, or if the implementation does not unwind the stack prior to calling std::terminate(), destructors for objects may not be called and external resources can be left in an indeterminate state. Abnormal process termination is the typical vector for denial-of-service attacks. For more information on implicitly calling std::terminate(), see ERR50-CPP. Do not abruptly terminate the program.
...
Allowing the application to abnormally terminate can lead to resources not being freed, closed, and so on. It is frequently a vector for denial-of-service attacks.
Rule | Severity | Likelihood | Detectable | RepairableRemediation Cost | Priority | Level |
|---|---|---|---|---|---|---|
ERR51-CPP | Low | Probable | Yes | MediumYes | P4 P6 | L3 L2 |
Automated Detection
Tool | Version | Checker | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Astrée |
| main-function-catch-all early-catch-all | Partially checked | |||||||||
| Axivion Bauhaus Suite |
| CertC++-ERR51 | ||||||||||
| CodeSonar |
| LANG.STRUCT.UCTCH | Masked by handler | |||||||||
| Helix QAC |
| C++4035, C++4036, C++4037 | ||||||||||
| Klocwork |
| MISRA.CATCH.ALL | ||||||||||
| LDRA tool suite |
| 527 S | Partially implemented | |||||||||
| Parasoft C/C++test |
| CERT_CPP-ERR51-a | Always catch exceptions | PRQA QA-C++ | 4.1 | |||||||
| Polyspace Bug Finder |
| CERT C++: ERR51-CPP | Checks for unhandled exceptions (rule partially covered) | |||||||||
| RuleChecker |
| main-function-catch-all early-catch-all | Partially checked | |||||||||
| Security Reviewer - Static Reviewer |
| C35 | Fully implemented | 4035, 4036, 4037
Related Vulnerabilities
Search for other vulnerabilities resulting from the violation of this rule on the CERT website.
...