|
Checker
|
Guideline
|
|---|
|
arithOperationsOnVoidPointer
|
API04-C. Provide a consistent and usable error-checking mechanism
|
|
arrayIndexOutOfBoundsCond
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
assignmentInAssert
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
autoVariables
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
autovarInvalidDeallocation
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C01
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C02
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C03
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C04
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C05
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C06
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C07
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C08
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C08
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C09
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C10
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C11
|
CON02-C. Do not use volatile as a synchronization primitive
|
|
C12
|
CON05-C. Do not perform operations that can block while holding a lock
|
|
C13
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C14
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C15
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C16
|
DCL13-C. Declare function parameters that are pointers to values not changed by the function as const
|
|
C17
|
FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
|
|
C18
|
DCL30-C. Declare objects with appropriate storage durations
|
|
C19
|
DCL31-C. Declare identifiers before using them
|
|
C20
|
DCL39-C. Avoid information leakage when passing a structure across a trust boundary
|
|
C21
|
DCL39-C. Avoid information leakage when passing a structure across a trust boundary
|
|
C22
|
DCL39-C. Avoid information leakage when passing a structure across a trust boundary
|
|
C23
|
DCL39-C. Avoid information leakage when passing a structure across a trust boundary
|
|
C24
|
ARR36-C. Do not subtract or compare two pointers that do not refer to the same array
|
|
C25
|
DCL39-C. Avoid information leakage when passing a structure across a trust boundary
|
|
C26
|
DCL40-C. Do not create incompatible declarations of the same function or object
|
|
C27
|
ENV30-C. Do not modify the object referenced by the return value of certain functions
|
|
C28
|
ENV30-C. Do not modify the object referenced by the return value of certain functions
|
|
C29
|
ENV30-C. Do not modify the object referenced by the return value of certain functions
|
|
C31
|
ERR04-C. Choose an appropriate termination strategy
|
|
C32
|
ERR05-C. Application-independent code should provide error detection without dictating error handling
|
|
C33
|
ERR05-C. Application-independent code should provide error detection without dictating error handling
|
|
C34
|
ERR32-C. Do not rely on indeterminate values of errno
|
|
C37
|
EXP00-C. Use parentheses for precedence of operation
|
|
C37
|
EXP08-C. Ensure pointer arithmetic is used correctly
|
|
C38
|
EXP09-C. Use sizeof to determine the size of a type or variable
|
|
C39
|
EXP09-C. Use sizeof to determine the size of a type or variable
|
|
C40
|
EXP09-C. Use sizeof to determine the size of a type or variable
|
|
C42
|
EXP09-C. Use sizeof to determine the size of a type or variable
|
|
C44
|
EXP09-C. Use sizeof to determine the size of a type or variable
|
|
C45
|
EXP09-C. Use sizeof to determine the size of a type or variable
|
|
C46
|
EXP09-C. Use sizeof to determine the size of a type or variable
|
|
C46
|
EXP09-C. Use sizeof to determine the size of a type or variable
|
|
C47
|
EXP12-C. Do not ignore values returned by functions
|
|
C48
|
EXP12-C. Do not ignore values returned by functions
|
|
C49
|
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
|
|
C50
|
EXP30-C. Do not depend on the order of evaluation for side effects
|
|
C50
|
EXP14-C. Beware of integer promotion when performing bitwise operations on integer types smaller than int
|
|
C51
|
EXP19-C. Use braces for the body of an if, for, or while statement
|
|
C52
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C54
|
EXP33-C. Do not read uninitialized memory
|
|
C55
|
EXP33-C. Do not read uninitialized memory
|
|
C56
|
EXP33-C. Do not read uninitialized memory
|
|
C57
|
EXP33-C. Do not read uninitialized memory
|
|
C58
|
EXP33-C. Do not read uninitialized memory
|
|
C59
|
EXP33-C. Do not read uninitialized memory
|
|
C60
|
EXP33-C. Do not read uninitialized memory
|
|
C61
|
EXP33-C. Do not read uninitialized memory
|
|
C62
|
EXP33-C. Do not read uninitialized memory
|
|
C63
|
EXP33-C. Do not read uninitialized memory
|
|
C64
|
EXP34-C. Do not dereference null pointers
|
|
C65
|
EXP34-C. Do not dereference null pointers
|
|
C66
|
EXP34-C. Do not dereference null pointers
|
|
C67
|
EXP36-C. Do not cast pointers into more strictly aligned pointer types
|
|
C68
|
EXP36-C. Do not cast pointers into more strictly aligned pointer types
|
|
C69
|
EXP36-C. Do not cast pointers into more strictly aligned pointer types
|
|
C70
|
EXP36-C. Do not cast pointers into more strictly aligned pointer types
|
|
C71
|
EXP37-C. Call functions with the correct number and type of arguments
|
|
C73
|
EXP40-C. Do not modify constant objects
|
|
C73
|
EXP46-C. Do not use a bitwise operator with a Boolean-like operand
|
|
C76
|
FIO21-C. Do not create temporary files in shared directories
|
|
C77
|
FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
|
|
C78
|
FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
|
|
C79
|
FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
|
|
C80
|
FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
|
|
C80
|
FIO42-C. Close files when they are no longer needed
|
|
C81
|
FIO47-C. Use valid format strings
|
|
C82
|
FIO47-C. Use valid format strings
|
|
C83
|
FIO47-C. Use valid format strings
|
|
C83
|
FIO47-C. Use valid format strings
|
|
C84
|
FIO47-C. Use valid format strings
|
|
C85
|
FIO47-C. Use valid format strings
|
|
C86
|
FIO47-C. Use valid format strings
|
|
C86
|
FIO47-C. Use valid format strings
|
|
C87
|
FLP03-C. Detect and handle floating-point errors
|
|
C88
|
FLP34-C. Ensure that floating-point conversions are within range of the new type
|
|
C101
|
ARR32-C. Ensure size arguments for variable length arrays are in a valid range
|
|
C107
|
ARR36-C. Do not subtract or compare two pointers that do not refer to the same array
|
|
C109
|
ARR38-C. Guarantee that library functions do not form invalid pointers
|
|
C122
|
CON40-C. Do not refer to an atomic variable twice in an expression
|
|
C123
|
CON40-C. Do not refer to an atomic variable twice in an expression
|
|
C126
|
DCL01-C. Do not reuse variable names in subscopes
|
|
C127
|
DCL01-C. Do not reuse variable names in subscopes
|
|
C129
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C130
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C132
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C133
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C135
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C154
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C155
|
DCL03-C. Use a static assertion to test the value of a constant expression
|
|
C176
|
DCL30-C. Declare objects with appropriate storage durations
|
|
C177
|
DCL30-C. Declare objects with appropriate storage durations
|
|
C178
|
DCL30-C. Declare objects with appropriate storage durations
|
|
C179
|
DCL30-C. Declare objects with appropriate storage durations
|
|
C999
|
INT01-C. Use size_t or rsize_t for all integer values representing the size of an object
|
|
CbOB
|
INT02-C. Understand integer conversion rules
|
|
CconstVariable
|
INT02-C. Understand integer conversion rules
|
|
CdLT
|
INT02-C. Understand integer conversion rules
|
|
CdoubleFree
|
INT02-C. Understand integer conversion rules
|
|
CduplicateCondition
|
INT02-C. Understand integer conversion rules
|
|
CE6
|
INT02-C. Understand integer conversion rules
|
|
CE6_S
|
INT02-C. Understand integer conversion rules
|
|
CE7
|
INT02-C. Understand integer conversion rules
|
|
CE8
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
CE11
|
INT02-C. Understand integer conversion rules
|
|
CE12
|
INT02-C. Understand integer conversion rules
|
|
CE13
|
INT02-C. Understand integer conversion rules
|
|
CE256
|
INT02-C. Understand integer conversion rules
|
|
CfCO
|
INT02-C. Understand integer conversion rules
|
|
CinvalidLifetime
|
INT02-C. Understand integer conversion rules
|
|
CinvalidScanfArgType_int
|
INT02-C. Understand integer conversion rules
|
|
CiRV
|
INT02-C. Understand integer conversion rules
|
|
CiSFW
|
INT02-C. Understand integer conversion rules
|
|
CknownConditionTrueFalse
|
INT02-C. Understand integer conversion rules
|
|
clarifyCalculation
|
INT08-C. Verify that all integer values are in range
|
|
ClRVNU
|
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
|
|
CmAD
|
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
|
|
CmemleakOnRealloc
|
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
|
|
CmissingReturn
|
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
|
|
CMR
|
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
|
|
CmVOOR
|
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
|
|
CnAS
|
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
|
|
CNI
|
INT32-C. Ensure that operations on signed integers do not result in overflow
|
|
CPP_02
|
INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors
|
|
CPP_03
|
INT34-C. Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand
|
|
CPP_05
|
INT36-C. Converting a pointer to integer or integer to pointer
|
|
CPP_07
|
MEM03-C. Clear sensitive information stored in reusable resources
|
|
CPP_08
|
MEM04-C. Beware of zero-length allocations
|
|
CPP_010
|
MEM05-C. Avoid large stack allocations
|
|
CPP_11
|
MEM10-C. Define and use a pointer validation function
|
|
CPP_12
|
MEM30-C. Do not access freed memory
|
|
CPP_17
|
MEM31-C. Free dynamically allocated memory when no longer needed
|
|
CPP_18
|
MEM31-C. Free dynamically allocated memory when no longer needed
|
|
CPP_22
|
MEM31-C. Free dynamically allocated memory when no longer needed
|
|
CPP_23
|
MEM31-C. Free dynamically allocated memory when no longer needed
|
|
CPP_24
|
MEM31-C. Free dynamically allocated memory when no longer needed
|
|
CPP_25
|
MEM31-C. Free dynamically allocated memory when no longer needed
|
|
CPP_26
|
MEM31-C. Free dynamically allocated memory when no longer needed
|
|
CPP_27
|
MEM31-C. Free dynamically allocated memory when no longer needed
|
|
CPP_028
|
MEM33-C. Allocate and copy structures containing a flexible array member dynamically
|
|
CPP_31
|
MEM34-C. Only free memory allocated dynamically
|
|
CPP_32
|
MEM34-C. Only free memory allocated dynamically
|
|
CPP_33
|
MEM34-C. Only free memory allocated dynamically
|
|
CPP_34
|
MEM34-C. Only free memory allocated dynamically
|
|
CPP_35
|
MEM34-C. Only free memory allocated dynamically
|
|
CPP_36
|
MEM34-C. Only free memory allocated dynamically
|
|
CPP_039
|
MEM35-C. Allocate sufficient memory for an object
|
|
CPP_44
|
MSC01-C. Strive for logical completeness
|
|
CPP_48
|
MEM12-C. Consider using a goto chain when leaving a function on error when using and releasing resources
|
|
CPP_57
|
MSC07-C. Detect and remove dead code
|
|
CPP_58
|
MSC07-C. Detect and remove dead code
|
|
CPP_59
|
MSC07-C. Detect and remove dead code
|
|
CPP_60
|
MSC07-C. Detect and remove dead code
|
|
CPP_61
|
MSC07-C. Detect and remove dead code
|
|
CPP_62
|
MSC07-C. Detect and remove dead code
|
|
CPP_uninitvar
|
MSC07-C. Detect and remove dead code
|
|
CPPCrypt
|
MSC07-C. Detect and remove dead code
|
|
CPPDSLHardcoded
|
MSC07-C. Detect and remove dead code
|
|
CPPDSLRAND
|
MSC07-C. Detect and remove dead code
|
|
CPPDSLWES
|
MSC07-C. Detect and remove dead code
|
|
CpPED
|
MSC07-C. Detect and remove dead code
|
|
CPPEnterCriticalSection
|
MSC07-C. Detect and remove dead code
|
|
CPPIsBadWritePtr
|
MSC07-C. Detect and remove dead code
|
|
CPPLoadLibrary
|
MSC07-C. Detect and remove dead code
|
|
CPPLoop
|
MSC07-C. Detect and remove dead code
|
|
CPPOftenMisured
|
MSC09-C. Character encoding: Use subset of ASCII for safety
|
|
CPPPBE
|
MSC11-C. Incorporate diagnostic tests using assertions
|
|
CPtr
|
MSC12-C. Detect and remove code that has no effect or is never executed
|
|
CsFPC
|
MSC18-C. Be careful while handling sensitive data, such as passwords, in program code
|
|
ctuNullPointer
|
MSC20-C. Do not use a switch statement to transfer control into a complex block
|
|
ctuOneDefinitionRuleViolation
|
MSC21-C. Use robust loop termination conditions
|
|
CuEV
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
CvariableScope
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
CWE395TEST_2_CPP
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
CWE561P25
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
CwPSPPE
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
CzDC
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
deallocret
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
integerOverflowCond
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
invalidContainer
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
invalidFunctionArg
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
leakUnsafeArgAlloc
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
memleak
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
memleakOnRealloc
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
noCopyConstructor
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
noOperatorEq
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
nullPointerRedundantCheck
|
MSC24-C. Do not use deprecated or obsolescent functions
|
|
oppositeExpression
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
redundantPointerOp
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
RTOS_01
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
RTOS_02
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
RTOS_03
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
RTOS_04
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
RTOS_05
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
RTOS_06
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
RTOS_07
|
MSC30-C. Do not use the rand() function for generating pseudorandom numbers
|
|
RTOS_09
|
MSC37-C. Ensure that control never reaches the end of a non-void function
|
|
RTOS_13
|
MSC39-C. Do not call va_arg() on a va_list that has an indeterminate value
|
|
RTOS_14
|
MSC41-C. Never hard code sensitive information
|
|
RTOS_18
|
MSC25-C. Do not use insecure or weak cryptographic algorithms
|
|
RTOS_19
|
POS01-C. Check for the existence of links when dealing with files
|
|
RTOS_20
|
POS52-C. Do not perform operations that can block while holding a POSIX lock
|
|
RTOS_22
|
PRE04-C. Do not reuse a standard header file name
|
|
RTOS_26
|
PRE13-C. Use the Standard predefined macros to test for versions and features.
|
|
RTOS_27
|
PRE30-C. Do not create a universal character name through concatenation
|
|
RTOS_28
|
PRE31-C. Avoid side effects in arguments to unsafe macros
|
|
RTOS_31
|
STR05-C. Use pointers to const when referring to string literals
|
|
RTOS_33
|
STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
|
|
RTOS_34
|
STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
|
|
shadowVariable
|
STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
|
|
shiftTooManyBits
|
STR32-C. Do not pass a non-null-terminated character sequence to a library function that expects a string
|
|
UNSAFE_01
|
STR37-C. Arguments to character-handling functions must be representable as an unsigned char
|
|
UNSAFE_02
|
STR38-C. Do not confuse narrow and wide character strings and functions
|
|
UNSAFE_03
|
STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
|
|
UNSAFE_04
|
STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
|
|
UNSAFE_05
|
WIN02-C. Restrict privileges when spawning child processes
|