SEI CERT C++ rules

The following table lists the Klocwork C++ checkers that map to the secure coding standard defined by the computer emergency response team (CERT).

Rule Checker name and description
ARR30-C(L2)

ABV.ANY_SIZE_ARRAY  Buffer Overflow - Array Index Out of Bounds

ABV.GENERAL  Buffer Overflow - Array Index Out of Bounds

ABV.GENERAL.MULTIDIMENSION  Buffer Overflow - Array Index Out of Bounds

ABV.NON_ARRAY  Non-array object is used as an array

ABV.STACK  Buffer Overflow - Local Array Index Out of Bounds

ABV.TAINTED  Buffer Overflow from Unvalidated Input

ABV.UNICODE.BOUND_MAP  Buffer overflow in mapping character function

ABV.UNICODE.FAILED_MAP  Mapping function failed

ABV.UNICODE.NNTS_MAP  Buffer overflow in mapping character function

ABV.UNICODE.SELF_MAP  Mapping function failed

ABV.UNKNOWN_SIZE  Buffer Overflow - Array Index Out of Bounds

NNTS.MIGHT  Buffer Overflow - Non-null Terminated String

NNTS.MUST  Buffer Overflow - Non-null Terminated String

NNTS.TAINTED  Unvalidated User Input Causing Buffer Overflow - Non-Null Terminated String

NPD.FUNC.CALL.MIGHT  Result of function that may return NULL may be passed to another function that may dereference it

SV.TAINTED.INDEX_ACCESS  Use of Unvalidated Integer as Array Index

SV.TAINTED.LOOP_BOUND  Use of Unvalidated Integer in Loop Condition

ARR37-C(L2)

CERT.ARR.PTR.ARITH  Pointer is used in arithmetic expression

ARR38-C(L2)

ABV.GENERAL  Buffer Overflow - Array Index Out of Bounds

ABV.GENERAL.MULTIDIMENSION  Buffer Overflow - Array Index Out of Bounds

ARR39-C(L2)

CERT.ARR.PTR.ARITH  Pointer is used in arithmetic expression

CON33-C(L3)

CERT.CONC.LIB_FUNC_USE  Avoid race conditions when using library functions

CON37-C(L3)

MISRA.STDLIB.SIGNAL  Use of the signal handling facilities of signal.h

CON40-C(L2)

CERT.CONC.ATOMIC_TWICE_EXPR  Do not refer to an atomic variable twice in an expression

CON41-C(L3)

CERT.CONC.ATOMIC_COMP_FAIL_IN_LOOP  Wrap functions that can spuriously fail up in a loop

CON50-CPP(L3)

CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED  Do not destroy a mutex while it is locked

CON54-CPP(L3)

CERT.CONC.WAKE_IN_LOOP  Wrap functions that can spuriously wake up in a loop

CON55-CPP(L3)

CERT.CONC.UNSAFE_COND_VAR  Preserve thread safety and liveness when using condition variables

CTR50-CPP(L2)

ABV.ANY_SIZE_ARRAY  Buffer Overflow - Array Index Out of Bounds

ABV.GENERAL  Buffer Overflow - Array Index Out of Bounds

ABV.GENERAL.MULTIDIMENSION  Buffer Overflow - Array Index Out of Bounds

ABV.NON_ARRAY  Non-array object is used as an array

ABV.STACK  Buffer Overflow - Local Array Index Out of Bounds

ABV.TAINTED  Buffer Overflow from Unvalidated Input

SV.TAINTED.ALLOC_SIZE  Use of Unvalidated Integer in Memory Allocation

SV.TAINTED.CALL.INDEX_ACCESS  Use of Unvalidated Integer as Array Index by Function Call

SV.TAINTED.CALL.LOOP_BOUND  Use of Unvalidated Integer in Loop Condition through a Function Call

SV.TAINTED.INDEX_ACCESS  Use of Unvalidated Integer as Array Index

CTR51-CPP(L2)

ITER.CONTAINER.MODIFIED  Use of invalid iterator

CTR52-CPP(L1)

ITER.END.OUTPARAM.MIGHT  Use of 'end' as an output iterator

ITER.END.OUTPARAM.MUST  Use of 'end' as an output iterator

CTR55-CPP(L2)

ITER.ADVANCE.NONADJACENT  Advancing iterator by a distance of more than 1

DCL30-C(L2)

LOCRET.ARG  Function returns address of local variable

LOCRET.GLOB  Function returns address of local variable

LOCRET.RET  Function returns address of local variable

DCL39-C(L3)

PORTING.STORAGE.STRUCT  Byte position of elements in a structure could depend on alignment and packing attributes.

DCL40-C(L3)

MISRA.FUNC.PARAMS.IDENT  Identifiers used in declaration and definition of function are not identical

DCL50-CPP(L1)

MISRA.FUNC.VARARG  Function with variable number of arguments

DCL51-CPP(L3)

MISRA.DEFINE.WRONGNAME  Usage of a name from the standard library for naming a macro

MISRA.DEFINE.WRONGNAME.UNDERSCORE  Usage of a reserved name for naming a macro

MISRA.STDLIB.WRONGNAME  Reused name of standard library macro, object or function

MISRA.STDLIB.WRONGNAME.UNDERSCORE  Usage of a reserved name for naming a language entity

MISRA.UNDEF.WRONGNAME  Undefinition of a name from the standard library

MISRA.UNDEF.WRONGNAME.UNDERSCORE  Undefinition of a reserved name

DCL52-CPP(L3)

CERT.DCL.REF_TYPE.CONST_OR_VOLATILE  Never qualify a reference type with const or volatile

DCL53-CPP(L3)

CERT.DCL.AMBIGUOUS_DECL  Do not write syntactically ambiguous declarations

DCL54-CPP(L3)

CERT.DCL.SAME_SCOPE_ALLOC_DEALLOC  Overload allocation and deallocation functions as a pair in the same scope

DCL57-CPP(L2)

MISRA.DTOR.THROW  Throw in destructor

DCL58-CPP(L2)

CERT.DCL.STD_NS_MODIFIED  Do not modify the standard namespaces

DCL59-CPP(L3)

MISRA.NAMESPACE.UNMD  Unnamed namespace in header file

ENV30-C(L3)

CXX.STDLIB.ILLEGAL_WRITE  The pointers returned by the Standard Library functions localeconv, getenv, setlocale or, strerror shall only be used as if they have pointer to const-qualified type

ENV32-C(L1)

CERT.EXIT.HANDLER_TERMINATE  All exit handlers must return normally

ENV33-C(L1)

SV.CODE_INJECTION.SHELL_EXEC  Command Injection into Shell Execution

ENV34-C(L3)

CXX.STDLIB.ILLEGAL_REUSE  The pointer returned by the Standard Library functions asctime and similar shall not be used following a subsequent call to the same function

ERR30-C(L1)

CXX.ERRNO.INCORRECTLY_CHECKED  Errno condition check not required after calling library function

CXX.ERRNO.NOT_CHECKED  Errno condition check is missing after calling library function

CXX.ERRNO.NOT_SET  Errno is not reset to zero before calling library function

ERR32-C(L3)

MISRA.INCL.SIGNAL.2012  The standard header file signal.h shall not be used

MISRA.STDLIB.SIGNAL  Use of the signal handling facilities of signal.h

ERR33-C(L1)

NPD.CHECK.MUST  Pointer will be dereferenced after it was positively checked for NULL

NPD.FUNC.MUST  Result of function that may return NULL will be dereferenced

SV.RVT.RETVAL_NOTTESTED  Ignored Return Value

ERR34-C(L2)

CERT.ERR.CONV.STR_TO_NUM  Detect errors when converting a string to a number

MISRA.STDLIB.ATOI  Use of 'atof', 'atoi' or 'atol' from library stdlib.h

SV.BANNED.RECOMMENDED.SCANF  Banned recommended API: unsafe scanf-type functions

ERR50-CPP(L3)

CERT.ERR.ABRUPT_TERM  Do not abruptly terminate the program

MISRA.TERMINATE  terminate() function is called explicitly

ERR51-CPP(L2)

MISRA.CATCH.ALL  No ellipsis exception handler in a try-catch block

ERR52-CPP(L3)

MISRA.STDLIB.LONGJMP  Use of setjmp macro or longjmp function

ERR53-CPP(L3)

MISRA.CTOR.TRY.NON_STATIC  Function try/catch block of constructor or destructor references non-static members

ERR54-CPP(L1)

MISRA.CATCH.NOALL  Ellipsis exception handler is not the last one in a try-catch block

MISRA.CATCH.WRONGORD  Handler for a base exception class precedes to a handler for a derived exception class in a try-catch block

ERR57-CPP(L3)

CL.MLK  Memory Leak - in destructor

MLK.MIGHT  Memory Leak - possible

MLK.MUST  Memory Leak

MLK.RET.MIGHT  Memory Leak - possible

MLK.RET.MUST  Memory Leak

RH.LEAK  Resource leak

ERR59-CPP(L2)

CERT.EXCEPTION.OVER.BOUNDARY  Exception thrown over execution boundary.

ERR61-CPP(L3)

MISRA.CATCH.BY_VALUE  Exception object of class type is caught by value

ERR62-CPP(L3)

CERT.ERR.CONV.STR_TO_NUM  Detect errors when converting a string to a number

EXP34-C(L1)

NPD.CHECK.CALL.MIGHT  Pointer may be passed to function that can dereference it after it was positively checked for NULL

NPD.CHECK.CALL.MUST  Pointer will be passed to function that may dereference it after it was positively checked for NULL

NPD.CHECK.MIGHT  Pointer may be dereferenced after it was positively checked for NULL

NPD.CHECK.MUST  Pointer will be dereferenced after it was positively checked for NULL

NPD.CONST.CALL  NULL is passed to function that can dereference it

NPD.CONST.DEREF  NULL is dereferenced

NPD.FUNC.CALL.MIGHT  Result of function that may return NULL may be passed to another function that may dereference it

NPD.FUNC.CALL.MUST  Result of function that may return NULL will be passed to another function that may dereference it

NPD.FUNC.MIGHT  Result of function that can return NULL may be dereferenced

NPD.FUNC.MUST  Result of function that may return NULL will be dereferenced

NPD.GEN.CALL.MIGHT  Null pointer may be passed to function that may dereference it

NPD.GEN.CALL.MUST  Null pointer will be passed to function that may dereference it

NPD.GEN.MIGHT  Null pointer may be dereferenced

NPD.GEN.MUST  Null pointer will be dereferenced

RNPD.CALL  Suspicious dereference of pointer in function call before NULL check

RNPD.DEREF  Suspicious dereference of pointer before NULL check

EXP39-C(L3)

CXX.CAST.OBJ_PTR_TO_OBJ_PTR  Cast between a pointer to object type and a pointer to a different object type

EXP42-C(L1)

CERT.MEMCMP.PADDED_DATA  Do not compare padding data

EXP45-C(L2)

ASSIGCOND.CALL  Assignment in condition (call)

ASSIGCOND.GEN  Assignment in condition

MISRA.ASSIGN.COND  Assignment operator is used in a condition

EXP46-C(L2)

MISRA.LOGIC.OPERATOR.NOT_BOOL  Operand of non-logical operator is effectively boolean

EXP47-C(L2)

CERT.VA_ARG.TYPE  Do not call va_arg with an argument of the incorrect type

EXP50-CPP(L2)

CERT.EXPR.PARENS  The precedence of operators within expressions should be made explicit.

MISRA.EXPR.PARENS.INSUFFICIENT  Limited dependence required for operator precedence rules in expressions

MISRA.INCR_DECR.OTHER  Increment or decrement operator is mixed with other operators in expression

PORTING.VAR.EFFECTS  Variable used twice in one expression where one usage is subject to side-effects

EXP51-CPP(L3)

CERT.EXPR.DELETE_ARR.BASE_PTR  Do not delete an array through a pointer of the incorrect type

EXP52-CPP(L3)

MISRA.SIZEOF.SIDE_EFFECT  Operand of sizeof has side effects

EXP53-CPP(L1)

UNINIT.CTOR.MIGHT  Uninitialized Variable in Constructor - possible

UNINIT.CTOR.MUST  Uninitialized Variable in Constructor

UNINIT.HEAP.MIGHT  Uninitialized Heap Use - possible

UNINIT.HEAP.MUST  Uninitialized Heap Use

UNINIT.STACK.ARRAY.MIGHT  Uninitialized Array - possible

UNINIT.STACK.ARRAY.MUST  Uninitialized Array

UNINIT.STACK.ARRAY.PARTIAL.MUST  Partially Uninitialized Array

UNINIT.STACK.MIGHT  Uninitialized Variable - possible

UNINIT.STACK.MUST  Uninitialized Variable

EXP54-CPP(L2)

CL.FFM.ASSIGN  Use of free memory (double free) - no operator=

CL.FFM.COPY  Use of free memory (double free) - no copy constructor

LOCRET.ARG  Function returns address of local variable

LOCRET.GLOB  Function returns address of local variable

LOCRET.RET  Function returns address of local variable

UFM.DEREF.MIGHT  Use of free memory (access) - possible

UFM.DEREF.MUST  Use of Freed Memory by Pointer

UFM.FFM.MIGHT  Use of free memory (double free) - possible

UFM.FFM.MUST  Freeing Freed Memory

UFM.RETURN.MIGHT  Use of freed memory (return) - possible

UFM.RETURN.MUST  Use of Freed Memory on Return

UFM.USE.MIGHT  Use of free memory - possible

UFM.USE.MUST  Use of Freed Memory

UNINIT.HEAP.MIGHT  Uninitialized Heap Use - possible

UNINIT.HEAP.MUST  Uninitialized Heap Use

UNINIT.STACK.ARRAY.MIGHT  Uninitialized Array - possible

UNINIT.STACK.ARRAY.MUST  Uninitialized Array

UNINIT.STACK.ARRAY.PARTIAL.MUST  Partially Uninitialized Array

UNINIT.STACK.MIGHT  Uninitialized Variable - possible

UNINIT.STACK.MUST  Uninitialized Variable

EXP55-CPP(L3)

MISRA.CAST.CONST  Cast operation removes const or volatile modifier from a pointer or reference

EXP56-CPP(L3)

MISRA.CAST.PTR.UNRELATED  Object of pointer type cast to unrelated type

MISRA.CAST.PTR_TO_INT  Cast between a pointer and an integral type

PORTING.CAST.PTR  Cast between types that are not both pointers or not pointers

PORTING.CAST.PTR.FLTPNT  Cast of a pointer to a floating point expression to a non floating point type pointer

PORTING.CAST.PTR.SIZE  Attempt to cast an expression to a type of a potentially incompatible size

EXP57-CPP(L3)

CERT.EXPR.DELETE_PTR.INCOMPLETE_TYPE  Do not delete a pointer to an incomplete type

EXP58-CPP(L3)

CERT.VA_START.TYPE  Pass an object of the correct type to va_start

EXP60-CPP(L2)

CERT.EXPR.PASS_NON_STD_LAYOUT  Do not pass a nonstandard-layout type object across execution boundaries

EXP61-CPP(L2)

LOCRET.RET  Function returns address of local variable

EXP62-CPP(L1)

CERT.MEMCMP.PADDED_DATA  Do not compare padding data

CWARN.MEM.NONPOD  Memory manipulation routine applied to a non-POD object

FIO30-C(L1)

SV.FMTSTR.GENERIC  Format String Vulnerability

SV.TAINTED.FMTSTR  Use of Unvalidated Data in a Format String

FIO34-C(L1)

CWARN.CMPCHR.EOF  A 'char' expression compared with EOF constant

FIO37-C(L1)

CERT.FIO.FGETS  Do not assume that fgets() or fgetws() returns a nonempty string when successful

FIO38-C(L3)

CERT.FILE_PTR.DEREF  A pointer to a FILE object shall not be dereferenced

CERT.FILE_PTR.DEREF.CAST  Object is casted to a FILE pointer, and it shall not be dereferenced

CERT.FILE_PTR.DEREF.INDIRECT  A pointer to a FILE object shall not be indirectly dereferenced by a system function

CERT.FILE_PTR.DEREF.RETURN  A pointer to a FILE object (returned by function) shall not be dereferenced

MISRA.FILE_PTR.DEREF.2012  A pointer to a FILE object shall not be dereferenced

MISRA.FILE_PTR.DEREF.CAST.2012  Object is casted to a FILE pointer, and it shall not be dereferenced

MISRA.FILE_PTR.DEREF.INDIRECT.2012  A pointer to a FILE object shall not be indirectly dereferenced by a system function

MISRA.FILE_PTR.DEREF.RETURN.2012  A pointer to a FILE object (returned by function) shall not be dereferenced

FIO39-C(L2)

CERT.FIO.NO_FLUSH  Flush or positioning function call missing

FIO42-C(L3)

RH.LEAK  Resource leak

FIO44-C(L3)

CERT.FSETPOS.VALUE  Only use values for fsetpos() that are returned from fgetpos()

FIO45-C(L2)

SV.TOCTOU.FILE_ACCESS  Time of Creation/Time of Use Race condition in File Access

FIO46-C(L3)

SV.INCORRECT_RESOURCE_HANDLING.URH  Insecure Resource Handling

FIO47-C(L2)

SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD  Incompatible type of a print function parameter

SV.FMT_STR.PRINT_FORMAT_MISMATCH.UNDESIRED  Unexpected type of a print function parameter

SV.FMT_STR.PRINT_IMPROP_LENGTH  Improper use of length modifier in a print function call

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW  Too few arguments in a print function call

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY  Too many arguments in a print function call

SV.FMT_STR.SCAN_FORMAT_MISMATCH.BAD  Incompatible type of a scan function parameter

SV.FMT_STR.SCAN_FORMAT_MISMATCH.UNDESIRED  Unexpected type of a scan function parameter

SV.FMT_STR.SCAN_IMPROP_LENGTH  Improper use of length modifier in a scan function call

SV.FMT_STR.SCAN_PARAMS_WRONGNUM.FEW  Too few arguments in a scan function call

SV.FMT_STR.SCAN_PARAMS_WRONGNUM.MANY  Too many arguments in a scan function call

SV.FMT_STR.UNKWN_FORMAT  Unknown format specifier in a print function call

FIO51-CPP(L3)

RH.LEAK  Resource leak

FLP30-C(L2)

MISRA.FOR.COUNTER.FLT  For loop counter has a floating point type

FLP32-C(L1)

CERT.MATH.DOMAIN.CHECK  One or more arguments passed to a standard library math function are outside its valid domain

CERT.MATH.RANGE.CHECK  Error condition must be checked after calling a library math function that might cause range error

FLP34-C(L3)

MISRA.CAST.FLOAT.WIDER  Cast of floating point expression to a wider floating point type

MISRA.CAST.FLOAT_INT  Cast of floating point expression to integral type

MISRA.CAST.INT_FLOAT  Cast of integral expression to floating point type

MISRA.CONV.FLOAT  Implicit floating-point conversion

FLP36-C(L3)

PORTING.CAST.FLTPNT  Cast of a floating point expression to a non floating point type

FLP37-C(L3)

CERT.MEMCMP.FLOAT_MEMBER  Do not compare when member is floating point

INT30-C(L2)

CWARN.NOEFFECT.OUTOFRANGE  Value outside of range

NUM.OVERFLOW  Possible Overflow

NUM.OVERFLOW.DF  Possible numeric overflow or wraparound

INT31-C(L1)

PORTING.CAST.SIZE  Expression is cast to a type of potentially different size

INT32-C(L1)

CWARN.NOEFFECT.OUTOFRANGE  Value outside of range

NUM.OVERFLOW  Possible Overflow

NUM.OVERFLOW.DF  Possible numeric overflow or wraparound

INT33-C(L2)

DBZ.CONST  Division by a zero constant occurs

DBZ.CONST.CALL  The value '0' is passed to function that can use this value as divisor

DBZ.GENERAL  Division by zero might occur

DBZ.GENERAL.FLOAT  Division by floating-point zero might occur

DBZ.ITERATOR  Division by zero might occur in a loop iterator

DBZ.ITERATOR.CALL  Division by zero might occur in a function call

DBZ.ITERATOR.FLOAT  Division by zero might occur in a loop iterator

INT34-C(L3)

MISRA.SHIFT.RANGE.2012  Right operand of shift operation is out of range - greater or equal to the essential type size of left operand, or is negative

MEM30-C(L2)

UFM.DEREF.MIGHT  Use of free memory (access) - possible

UFM.DEREF.MUST  Use of Freed Memory by Pointer

UFM.FFM.MIGHT  Use of free memory (double free) - possible

UFM.FFM.MUST  Freeing Freed Memory

UFM.RETURN.MIGHT  Use of freed memory (return) - possible

UFM.RETURN.MUST  Use of Freed Memory on Return

UFM.USE.MIGHT  Use of free memory - possible

UFM.USE.MUST  Use of Freed Memory

MEM31-C(L3)

CL.FFM.ASSIGN  Use of free memory (double free) - no operator=

CL.FFM.COPY  Use of free memory (double free) - no copy constructor

CL.SHALLOW.ASSIGN  Use of free memory (double free) - shallow copy in operator=

CL.SHALLOW.COPY  Use of free memory (double free) - shallow copy in copy constructor

FMM.MIGHT  Freeing Mismatched Memory - possible

FMM.MUST  Freeing Mismatched Memory

MEM34-C(L2)

FNH.MIGHT  Freeing Non-Heap Memory - possible

FNH.MUST  Freeing Non-Heap Memory

MEM35-C(L2)

INCORRECT.ALLOC_SIZE  Incorrect Allocation Size

SV.TAINTED.ALLOC_SIZE  Use of Unvalidated Integer in Memory Allocation

MEM36-C(L3)

AUTOSAR.STDLIB.MEMORY  Functions malloc, calloc, realloc and free shall not be used

MEM50-CPP(L2)

UFM.DEREF.MIGHT  Use of free memory (access) - possible

UFM.DEREF.MUST  Use of Freed Memory by Pointer

UFM.FFM.MIGHT  Use of free memory (double free) - possible

UFM.FFM.MUST  Freeing Freed Memory

UFM.RETURN.MIGHT  Use of freed memory (return) - possible

UFM.RETURN.MUST  Use of Freed Memory on Return

UFM.USE.MIGHT  Use of free memory - possible

UFM.USE.MUST  Use of Freed Memory

MEM51-CPP(L2)

CL.FFM.ASSIGN  Use of free memory (double free) - no operator=

CL.FFM.COPY  Use of free memory (double free) - no copy constructor

CL.FMM  Freeing Mismatched Memory - in destructor

CL.SHALLOW.ASSIGN  Use of free memory (double free) - shallow copy in operator=

CL.SHALLOW.COPY  Use of free memory (double free) - shallow copy in copy constructor

FMM.MIGHT  Freeing Mismatched Memory - possible

FMM.MUST  Freeing Mismatched Memory

FNH.MIGHT  Freeing Non-Heap Memory - possible

FNH.MUST  Freeing Non-Heap Memory

FUM.GEN.MIGHT  Freeing Unallocated Memory - possible

FUM.GEN.MUST  Freeing Unallocated Memory

UNINIT.CTOR.MIGHT  Uninitialized Variable in Constructor - possible

UNINIT.CTOR.MUST  Uninitialized Variable in Constructor

UNINIT.HEAP.MIGHT  Uninitialized Heap Use - possible

UNINIT.HEAP.MUST  Uninitialized Heap Use

MEM52-CPP(L1)

NPD.CHECK.CALL.MIGHT  Pointer may be passed to function that can dereference it after it was positively checked for NULL

NPD.CHECK.CALL.MUST  Pointer will be passed to function that may dereference it after it was positively checked for NULL

NPD.CHECK.MIGHT  Pointer may be dereferenced after it was positively checked for NULL

NPD.CHECK.MUST  Pointer will be dereferenced after it was positively checked for NULL

NPD.CONST.CALL  NULL is passed to function that can dereference it

NPD.CONST.DEREF  NULL is dereferenced

NPD.FUNC.CALL.MIGHT  Result of function that may return NULL may be passed to another function that may dereference it

NPD.FUNC.CALL.MUST  Result of function that may return NULL will be passed to another function that may dereference it

NPD.FUNC.MIGHT  Result of function that can return NULL may be dereferenced

NPD.FUNC.MUST  Result of function that may return NULL will be dereferenced

NPD.GEN.CALL.MIGHT  Null pointer may be passed to function that may dereference it

NPD.GEN.CALL.MUST  Null pointer will be passed to function that may dereference it

NPD.GEN.MIGHT  Null pointer may be dereferenced

NPD.GEN.MUST  Null pointer will be dereferenced

RNPD.CALL  Suspicious dereference of pointer in function call before NULL check

RNPD.DEREF  Suspicious dereference of pointer before NULL check

MEM53-CPP(L2)

CERT.MEM.OBJ_LIFETIME_CTOR  Uninitialized Heap Member Function Call

CERT.MEM.OBJ_LIFETIME_DTOR  Object with manually allocated memory not explicitly destroyed

MEM54-CPP(L2)

CERT.MEM.PLACEMENTNEW.MISALIGNED  Provide placement new with properly aligned storage

CERT.MEM.PLACEMENTNEW.TOOSMALL  Provide placement new with sufficient storage

MEM55-CPP(L2)

CERT.MEM.OVERRIDE.DELETE  Honor replacement dynamic storage management requirements for 'delete'

CERT.MEM.OVERRIDE.NEW  Honor replacement dynamic storage management requirements for 'new'

MEM56-CPP(L2)

CERT.MEM.SMART_PTR.OWNED  Multiple smart pointer owners of pointer

CERT.MEM.SMART_PTR.OWNED.THIS  The underlying resource might be already owned by a non-related smart pointer

MSC30-C(L3)

CERT.MSC.STD_RAND_CALL  Do not use std::rand() for generating pseudorandom numbers

MSC32-C(L1)

CERT.MSC.SEED_RANDOM  Properly seed pseudorandom number generators

MSC33-C(L2)

CERT.MSC.ASCTIME  Do not pass invalid data to the asctime() function

MSC37-C(L2)

FUNCRET.GEN  Non-void function does not return value

FUNCRET.IMPLICIT  Non-void function implicitly returning int does not return value

MSC39-C(L3)

VA.LIST.INDETERMINATE  Attempt to call va_arg() on a va_list that has an indeterminate value

MSC40-C(L3)

MISRA.FUNC.STATIC.REDECL  Function or object redeclaration does not include 'static' modifier

MSC41-C(L2)

CXX.SV.PWD.PLAIN  Attempt to set password using a plain string

CXX.SV.PWD.PLAIN.LENGTH  Attempt to set password with a length less than 15 characters

CXX.SV.PWD.PLAIN.LENGTH.ZERO  Attempt to set password with a length of zero characters

HCC  Use of hardcoded credentials

HCC.PWD  Use of a hardcoded password

HCC.USER  Use of a hardcoded user name

MSC50-CPP(L3)

CERT.MSC.STD_RAND_CALL  Do not use std::rand() for generating pseudorandom numbers

MSC51-CPP(L1)

AUTOSAR.STDLIB.RANDOM.NBR_GEN_DEFAULT_INIT  Random number engines shall not be default-initialized

MSC52-CPP(L2)

FUNCRET.GEN  Non-void function does not return value

FUNCRET.IMPLICIT  Non-void function implicitly returning int does not return value

MSC53-CPP(L3)

CERT.MSC.NORETURN_FUNC_RETURNS  Do not return from a function declared [[noreturn]]

MSC54-CPP(L2)

CERT.MSC.SIG_HANDLER.POF  A signal handler must be a plain old function

OOP50-CPP(L3)

CERT.OOP.CTOR.VIRTUAL_FUNC  Do not invoke virtual functions from constructors or destructors

OOP52-CPP(L3)

CL.MLK.VIRTUAL  Memory Leak - possible in destructor

CWARN.DTOR.NONVIRT.DELETE  Delete expression for an object of a class with virtual methods and no virtual destructor

OOP53-CPP(L2)

CERT.OOP.CTOR.INIT_ORDER  Write constructor member initializers in the canonical order

OOP54-CPP(L3)

CL.SELF-ASSIGN  Use of free memory (double free) - in operator=

OOP55-CPP(L2)

CERT.OOP.PTR_MEMBER.NO_MEMBER  Do not use pointer-to-member operators to access nonexistent members

OOP57-CPP(L1)

CERT.OOP.CSTD_FUNC_USE  Prefer special member functions and overloaded operators to C Standard Library functions

OOP58-CPP(L2)

CERT.OOP.COPY_MUTATES  Copy operations must not mutate the source object

POS30-C(L1)

ABV.GENERAL  Buffer Overflow - Array Index Out of Bounds

ABV.GENERAL.MULTIDIMENSION  Buffer Overflow - Array Index Out of Bounds

POS34-C(L2)

CERT.PUTENV.AUTO_VARIABLE  Do not call putenv() with a pointer to an automatic variable as the argument

POS35-C(L2)

CERT.STR.ASSIGN.CONST_TO_NONCONST  Do not assign a const char pointer to a non-const char pointer

SV.TOCTOU.FILE_ACCESS  Time of Creation/Time of Use Race condition in File Access

POS36-C(L1)

SV.USAGERULES.PERMISSIONS  Use of Privilege Elevation

POS37-C(L1)

SV.USAGERULES.PERMISSIONS  Use of Privilege Elevation

POS39-C(L1)

BYTEORDER.HTON.SEND  Missed conversion from host to network byte order

BYTEORDER.HTON.WRITE  Missed conversion from host to network byte order

BYTEORDER.NTOH.READ  Missed conversion from network to host byte order

BYTEORDER.NTOH.RECV  Missed conversion from network to host byte order

POS44-C(L3)

MISRA.INCL.SIGNAL.2012  The standard header file signal.h shall not be used

POS47-C(L3)

CERT.POS.THREAD.ASYNC_CANCEL  Do not use threads that can be canceled asynchronously

POS51-C(L3)

CONC.DL  Deadlock

CONC.NO_UNLOCK  Missing unlock for variable

POS52-C(L3)

CONC.SLEEP  Function may block in critical section

POS54-C(L1)

SV.RVT.RETVAL_NOTTESTED  Ignored Return Value

PRE30-C(L3)

MISRA.DEFINE.SHARP  # or ## operator in a macro definition

PRE31-C(L2)

PORTING.VAR.EFFECTS  Variable used twice in one expression where one usage is subject to side-effects

PRE32-C(L3)

MISRA.EXPANSION.DIRECTIVE  Directive-like tokens within a macro argument

SIG34-C(L3)

MISRA.STDLIB.SIGNAL  Use of the signal handling facilities of signal.h

SIG35-C(L3)

CERT.STDLIB.SIGNAL  Do not return from a computational exception signal handler

STR30-C(L2)

CERT.STR.ARG.CONST_TO_NONCONST  Do not pass a const char pointer to a non-const char pointer argument

CERT.STR.ASSIGN.CONST_TO_NONCONST  Do not assign a const char pointer to a non-const char pointer

STR31-C(L2)

SV.FMT_STR.BAD_SCAN_FORMAT  Input format specifier error

SV.UNBOUND_STRING_INPUT.FUNC  Usage of unbounded string input

STR32-C(L1)

NNTS.MIGHT  Buffer Overflow - Non-null Terminated String

NNTS.MUST  Buffer Overflow - Non-null Terminated String

SV.STRBO.BOUND_COPY.UNTERM  Possible Buffer Overflow in Following String Operations

STR34-C(L2)

CXX.CAST.SIGNED_CHAR_TO_INTEGER  Cast char to unsigned char before converting to larger integer sizes

STR37-C(L3)

AUTOSAR.STDLIB.CCTYPE.UCHAR  Arguments to character-handling functions defined in <cctype> shall be representable as an unsigned char

STR38-C(L1)

CXX.DIFF.WIDTH.STR_AND_FUNC  Implicit cast between narrow and wide character string while calling function

STR50-CPP(L2)

NNTS.MIGHT  Buffer Overflow - Non-null Terminated String

NNTS.MUST  Buffer Overflow - Non-null Terminated String

NNTS.TAINTED  Unvalidated User Input Causing Buffer Overflow - Non-Null Terminated String

SV.UNBOUND_STRING_INPUT.CIN  Usage of cin for unbounded string input

STR51-CPP(L1)

NPD.CHECK.CALL.MIGHT  Pointer may be passed to function that can dereference it after it was positively checked for NULL

NPD.CHECK.CALL.MUST  Pointer will be passed to function that may dereference it after it was positively checked for NULL

NPD.CHECK.MIGHT  Pointer may be dereferenced after it was positively checked for NULL

NPD.CHECK.MUST  Pointer will be dereferenced after it was positively checked for NULL

NPD.CONST.CALL  NULL is passed to function that can dereference it

NPD.CONST.DEREF  NULL is dereferenced

NPD.FUNC.CALL.MIGHT  Result of function that may return NULL may be passed to another function that may dereference it

NPD.FUNC.CALL.MUST  Result of function that may return NULL will be passed to another function that may dereference it

NPD.FUNC.MIGHT  Result of function that can return NULL may be dereferenced

NPD.FUNC.MUST  Result of function that may return NULL will be dereferenced

NPD.GEN.CALL.MIGHT  Null pointer may be passed to function that may dereference it

NPD.GEN.CALL.MUST  Null pointer will be passed to function that may dereference it

NPD.GEN.MIGHT  Null pointer may be dereferenced

NPD.GEN.MUST  Null pointer will be dereferenced

RNPD.CALL  Suspicious dereference of pointer in function call before NULL check

RNPD.DEREF  Suspicious dereference of pointer before NULL check

"MISRA", "MISRA C" and "MISRA C++" are registered trademarks of The MISRA Consortium Limited. ​