GitHub
CERT Secure Coding

Polyspace Bug Finder

This page was automatically generated and should not be edited.

The information on this page was provided by outside contributors and has not been verified by SEI CERT.

The table below can be re-ordered, by clicking column headers.

Tool Version: R2025b

CheckerGuideline
CERT C++: CON50-CPPCON50-CPP. Do not destroy a mutex while it is locked
CERT C++: CON51-CPPCON51-CPP. Ensure actively held locks are released on exceptional conditions
CERT C++: CON52-CPPCON52-CPP. Prevent data races when accessing bit-fields from multiple threads
CERT C++: CON53-CPPCON53-CPP. Avoid deadlock by locking in a predefined order
CERT C++: CON54-CPPCON54-CPP. Wrap functions that can spuriously wake up in a loop
CERT C++: CON55-CPPCON55-CPP. Preserve thread safety and liveness when using condition variables
CERT C++: CON56-CPPCON56-CPP. Do not speculatively lock a non-recursive mutex that is already owned by the calling thread
CERT C++: CTR50-CPPCTR50-CPP. Guarantee that container indices and iterators are within the valid range
CERT C++: CTR51-CPPCTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container
CERT C++: CTR52-CPPCTR52-CPP. Guarantee that library functions do not overflow
CERT C++: CTR53-CPPCTR53-CPP. Use valid iterator ranges
CERT C++: CTR54-CPPCTR54-CPP. Do not subtract iterators that do not refer to the same container
CERT C++: CTR55-CPPCTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
CERT C++: CTR56-CPPCTR56-CPP. Do not use pointer arithmetic on polymorphic objects
CERT C++: CTR57-CPPCTR57-CPP. Provide a valid ordering predicate
CERT C++: CTR58-CPPCTR58-CPP. Predicate function objects should not be mutable
CERT C++: DCL50-CPPDCL50-CPP. Do not define a C-style variadic function
CERT C++: DCL51-CPPDCL51-CPP. Do not declare or define a reserved identifier
CERT C++: DCL52-CPPDCL52-CPP. Never qualify a reference type with const or volatile
CERT C++: DCL53-CPPDCL53-CPP. Do not write syntactically ambiguous declarations
CERT C++: DCL54-CPPDCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope
CERT C++: DCL55-CPPDCL55-CPP. Avoid information leakage when passing a class object across a trust boundary
CERT C++: DCL56-CPPDCL56-CPP. Avoid cycles during initialization of static objects
CERT C++: DCL57-CPPDCL57-CPP. Do not let exceptions escape from destructors or deallocation functions
CERT C++: DCL58-CPPDCL58-CPP. Do not modify the standard namespaces
CERT C++: DCL59-CPPDCL59-CPP. Do not define an unnamed namespace in a header file
CERT C++: DCL60-CPPDCL60-CPP. Obey the one-definition rule
CERT C++: ERR50-CPPERR50-CPP. Do not abruptly terminate the program
CERT C++: ERR51-CPPERR51-CPP. Handle all exceptions
CERT C++: ERR52-CPPERR52-CPP. Do not use setjmp() or longjmp()
CERT C++: ERR53-CPPERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler
CERT C++: ERR54-CPPERR54-CPP. Catch handlers should order their parameter types from most derived to least derived
CERT C++: ERR55-CPPERR55-CPP. Honor exception specifications
CERT C++: ERR56-CPPERR56-CPP. Guarantee exception safety
CERT C++: ERR57-CPPERR57-CPP. Do not leak resources when handling exceptions
CERT C++: ERR58-CPPERR58-CPP. Handle all exceptions thrown before main() begins executing
CERT C++: ERR59-CPPERR59-CPP. Do not throw an exception across execution boundaries
CERT C++: ERR60-CPPERR60-CPP. Exception objects must be nothrow copy constructible
CERT C++: ERR61-CPPERR61-CPP. Catch exceptions by lvalue reference
CERT C++: ERR62-CPPERR62-CPP. Detect errors when converting a string to a number
CERT C++: EXP50-CPPEXP50-CPP. Do not depend on the order of evaluation for side effects
CERT C++: EXP51-CPPEXP51-CPP. Do not delete an array through a pointer of the incorrect type
CERT C++: EXP52-CPPEXP52-CPP. Do not rely on side effects in unevaluated operands
CERT C++: EXP53-CPPEXP53-CPP. Do not read uninitialized memory
CERT C++: EXP54-CPPEXP54-CPP. Do not access an object outside of its lifetime
CERT C++: EXP55-CPPEXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type
CERT C++: EXP56-CPPEXP56-CPP. Do not call a function with a mismatched language linkage
CERT C++: EXP57-CPPEXP57-CPP. Do not cast or delete pointers to incomplete classes
CERT C++: EXP58-CPPEXP58-CPP. Pass an object of the correct type to va_start
CERT C++: EXP59-CPPEXP59-CPP. Use offsetof() on valid types and members
CERT C++: EXP60-CPPEXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries
CERT C++: EXP61-CPPEXP61-CPP. A lambda object must not outlive any of its reference captured objects
CERT C++: EXP62-CPPEXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
CERT C++: EXP63-CPPEXP63-CPP. Do not rely on the value of a moved-from object
CERT C++: FIO50-CPPFIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call
CERT C++: FIO51-CPPFIO51-CPP. Close files when they are no longer needed
CERT C++: INT50-CPPINT50-CPP. Do not cast to an out-of-range enumeration value
CERT C++: MEM50-CPPMEM50-CPP. Do not access freed memory
CERT C++: MEM51-CPPMEM51-CPP. Properly deallocate dynamically allocated resources
CERT C++: MEM52-CPPMEM52-CPP. Detect and handle memory allocation errors
CERT C++: MEM53-CPPMEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime
CERT C++: MEM54-CPPMEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
CERT C++: MEM55-CPPMEM55-CPP. Honor replacement dynamic storage management requirements
CERT C++: MEM56-CPPMEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer
CERT C++: MEM57-CPPMEM57-CPP. Avoid using default operator new for over-aligned types
CERT C++: MSC50-CPPMSC50-CPP. Do not use std::rand() for generating pseudorandom numbers
CERT C++: MSC51-CPPMSC51-CPP. Ensure your random number generator is properly seeded
CERT C++: MSC52-CPPMSC52-CPP. Value-returning functions must return a value from all exit paths
CERT C++: MSC53-CPPMSC53-CPP. Do not return from a function declared [[noreturn]]
CERT C++: MSC54-CPPMSC54-CPP. A signal handler must be a plain old function
CERT C++: OOP50-CPPOOP50-CPP. Do not invoke virtual functions from constructors or destructors
CERT C++: OOP51-CPPOOP51-CPP. Do not slice derived objects
CERT C++: OOP52-CPPOOP52-CPP. Do not delete a polymorphic object without a virtual destructor
CERT C++: OOP53-CPPOOP53-CPP. Write constructor member initializers in the canonical order
CERT C++: OOP54-CPPOOP54-CPP. Gracefully handle self-copy assignment
CERT C++: OOP55-CPPOOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
CERT C++: OOP56-CPPOOP56-CPP. Honor replacement handler requirements
CERT C++: OOP57-CPPOOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions
CERT C++: OOP58-CPPOOP58-CPP. Copy operations must not mutate the source object
CERT C++: STR50-CPPSTR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
CERT C++: STR51-CPPSTR51-CPP. Do not attempt to create a std::string from a null pointer
CERT C++: STR52-CPPSTR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string
CERT C++: STR53-CPPSTR53-CPP. Range check element access