Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Because assert() calls abort(), cleanup functions registered with atexit() are not called. If the intention of the programmer is to properly clean up in the case of a failed assertion, then runtime assertions should be replaced with static assertions where possible. (See DCL03-C. Use a static assertion to test the value of a constant expression.) When the assertion is based on runtime data, the assert should be replaced with a runtime check that implements the adopted error strategy . (See see ERR00-C. Adopt and implement a consistent and comprehensive error-handling policy).)

See ERR04-C. Choose an appropriate termination strategy for more information on program termination strategies and MSC11-C. Incorporate diagnostic tests using assertions for more information on using the assert() macro.

...

Tool

Version

Checker

Description

Compass/ROSE

 

 

Can detect some violations of this rule. However, it can only detect violations involving abort() because assert() is implemented as a macro

LDRA tool suite
Include Page
LDRA_V
LDRA_V
44 SEnhanced Enforcementenforcement

Related Vulnerabilities

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

...