GitHub
CERT Secure Coding

CodeSonar

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: 9.1p0

CheckerGuideline
(customization)FIO44-C. Only use values for fsetpos() that are returned from fgetpos()
(customization)ERR34-C. Detect errors when converting a string to a number
(customization)POS34-C. Do not call putenv() with a pointer to an automatic variable as the argument
(customization)DCL03-C. Use a static assertion to test the value of a constant expression
(customization)FIO06-C. Create files with appropriate access permissions
(customization)FIO08-C. Take care when calling remove() on an open file
(customization)FIO10-C. Take care when using the rename() function
(customization)FIO13-C. Never push back anything other than one read character
(customization)FIO24-C. Do not open a file that is already open
(customization)MEM03-C. Clear sensitive information stored in reusable resources
(customization)MEM04-C. Beware of zero-length allocations
(customization)MSC24-C. Do not use deprecated or obsolescent functions
(customization)STR06-C. Do not assume that strtok() leaves the parse string unchanged
(customization)WIN01-C. Do not forcibly terminate execution
(general)ENV01-C. Do not make assumptions about the size of an environment variable
(general)INT04-C. Enforce limits on integer values originating from tainted sources
(general)MEM11-C. Do not assume infinite heap space
ALLOC.DFMEM00-C. Allocate and free memory in the same module, at the same level of abstraction
ALLOC.DFMEM01-C. Store a new value in pointers immediately after free()
ALLOC.LEAKMEM31-C. Free dynamically allocated memory when no longer needed
ALLOC.LEAKFIO42-C. Close files when they are no longer needed
ALLOC.LEAKCON30-C. Clean up thread-specific storage
ALLOC.LEAKMEM00-C. Allocate and free memory in the same module, at the same level of abstraction
ALLOC.LEAKMEM11-C. Do not assume infinite heap space
ALLOC.SIZE.ADDOFLOWINT30-C. Ensure that unsigned integer operations do not wrap
ALLOC.SIZE.ADDOFLOWINT32-C. Ensure that operations on signed integers do not result in overflow
ALLOC.SIZE.ADDOFLOWMEM35-C. Allocate sufficient memory for an object
ALLOC.SIZE.ADDOFLOWINT08-C. Verify that all integer values are in range
ALLOC.SIZE.ADDOFLOWINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
ALLOC.SIZE.IOFLOWINT30-C. Ensure that unsigned integer operations do not wrap
ALLOC.SIZE.IOFLOWINT32-C. Ensure that operations on signed integers do not result in overflow
ALLOC.SIZE.IOFLOWARR32-C. Ensure size arguments for variable length arrays are in a valid range
ALLOC.SIZE.IOFLOWMEM35-C. Allocate sufficient memory for an object
ALLOC.SIZE.IOFLOWINT08-C. Verify that all integer values are in range
ALLOC.SIZE.IOFLOWINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
ALLOC.SIZE.MULOFLOWINT30-C. Ensure that unsigned integer operations do not wrap
ALLOC.SIZE.MULOFLOWINT32-C. Ensure that operations on signed integers do not result in overflow
ALLOC.SIZE.MULOFLOWARR32-C. Ensure size arguments for variable length arrays are in a valid range
ALLOC.SIZE.MULOFLOWMEM35-C. Allocate sufficient memory for an object
ALLOC.SIZE.MULOFLOWINT08-C. Verify that all integer values are in range
ALLOC.SIZE.MULOFLOWINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
ALLOC.SIZE.MULOFLOWMEM07-C. Ensure that the arguments to calloc(), when multiplied, do not wrap
ALLOC.SIZE.SUBUFLOWINT30-C. Ensure that unsigned integer operations do not wrap
ALLOC.SIZE.SUBUFLOWINT32-C. Ensure that operations on signed integers do not result in overflow
ALLOC.SIZE.SUBUFLOWMEM35-C. Allocate sufficient memory for an object
ALLOC.SIZE.SUBUFLOWINT08-C. Verify that all integer values are in range
ALLOC.SIZE.SUBUFLOWINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
ALLOC.SIZE.TRUNCINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
ALLOC.SIZE.TRUNCMEM35-C. Allocate sufficient memory for an object
ALLOC.SIZE.TRUNCINT02-C. Understand integer conversion rules
ALLOC.SIZE.TRUNCINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
ALLOC.TMMEM34-C. Only free memory allocated dynamically
ALLOC.TMWIN30-C. Properly pair allocation and deallocation functions
ALLOC.TMAPI07-C. Enforce type safety
ALLOC.UAFMEM30-C. Do not access freed memory
ALLOC.UAFMEM01-C. Store a new value in pointers immediately after free()
BADFUNC.*MSC23-C. Beware of vendor-specific library and language differences
BADFUNC.*MSC24-C. Do not use deprecated or obsolescent functions
BADFUNC.ABORTENV32-C. All exit handlers must return normally
BADFUNC.ATOFERR34-C. Detect errors when converting a string to a number
BADFUNC.ATOIERR34-C. Detect errors when converting a string to a number
BADFUNC.ATOLERR34-C. Detect errors when converting a string to a number
BADFUNC.ATOLLERR34-C. Detect errors when converting a string to a number
BADFUNC.BO.*ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
BADFUNC.BO.*STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
BADFUNC.BO.*API02-C. Functions that read or write to or from an array should take an argument to specify the source or target size
BADFUNC.CHROOTPOS05-C. Limit access to files by creating a jail
BADFUNC.CREATEFILEFIO06-C. Create files with appropriate access permissions
BADFUNC.CREATEPROCESSWIN02-C. Restrict privileges when spawning child processes
BADFUNC.EXITENV32-C. All exit handlers must return normally
BADFUNC.FORKPOS38-C. Beware of race conditions when using fork and file descriptors
BADFUNC.GETENVENV30-C. Do not modify the object referenced by the return value of certain functions
BADFUNC.LONGJMPENV32-C. All exit handlers must return normally
BADFUNC.LONGJMPMSC22-C. Use the setjmp(), longjmp() facility securely
BADFUNC.MEMCMPEXP42-C. Do not compare padding data
BADFUNC.MEMSETMSC06-C. Beware of compiler optimizations
BADFUNC.PATH.AFXLOADLIBRARYWIN00-C. Be specific when dynamically loading libraries
BADFUNC.PATH.COLOADLIBRARYWIN00-C. Be specific when dynamically loading libraries
BADFUNC.PATH.LOADLIBRARYWIN00-C. Be specific when dynamically loading libraries
BADFUNC.PATH.SYSTEMENV33-C. Do not call system()
BADFUNC.PUTENVPOS34-C. Do not call putenv() with a pointer to an automatic variable as the argument
BADFUNC.RANDOM.RANDCON33-C. Avoid race conditions when using library functions
BADFUNC.RANDOM.RANDMSC30-C. Do not use the rand() function for generating pseudorandom numbers
BADFUNC.REALLOCMEM36-C. Do not modify the alignment of objects by calling realloc()
BADFUNC.SETJMPMSC22-C. Use the setjmp(), longjmp() facility securely
BADFUNC.SIGNALSIG30-C. Call only asynchronous-safe functions within signal handlers
BADFUNC.SIGNALSIG34-C. Do not call signal() from within interruptible signal handlers
BADFUNC.SIGNALCON37-C. Do not call signal() in a multithreaded program
BADFUNC.SIGNALSIG00-C. Mask signals handled by noninterruptible signal handlers
BADFUNC.SIGNALSIG01-C. Understand implementation-specific details regarding signal handler persistence
BADFUNC.SIGNALSIG02-C. Avoid using signals to implement normal functionality
BADFUNC.TEMP.*FIO01-C. Be careful using functions that use file names for identification
BADFUNC.TEMP.*FIO21-C. Do not create temporary files in shared directories
BADFUNC.TEMP.TMPNAMCON33-C. Avoid race conditions when using library functions
BADFUNC.TIME_HMSC33-C. Do not pass invalid data to the asctime() function
BADFUNC.TMPFILE_SFIO01-C. Be careful using functions that use file names for identification
BADFUNC.TMPFILE_SFIO21-C. Do not create temporary files in shared directories
BADFUNC.TMPNAM_SFIO01-C. Be careful using functions that use file names for identification
BADFUNC.TMPNAM_SFIO21-C. Do not create temporary files in shared directories
BADFUNC.TTYNAMECON33-C. Avoid race conditions when using library functions
BADFUNC.WEAKCRYPTOMSC25-C. Do not use insecure or weak cryptographic algorithms
BADMACRO.STDARG_HMSC38-C. Do not treat a predefined identifier as an object if it might only be implemented as a macro
BADMACRO.STDARG_HMSC39-C. Do not call va_arg() on a va_list that has an indeterminate value
BADMACRO.WEAK_CRYPTOMSC25-C. Do not use insecure or weak cryptographic algorithms
BUILD.WALLMSC00-C. Compile cleanly at high warning levels
BUILD.WERRORMSC00-C. Compile cleanly at high warning levels
CONCURRENCY.BADFUNC.CNDSIGNALCON38-C. Preserve thread safety and liveness when using condition variables
CONCURRENCY.BADFUNC.CNDWAITCON36-C. Wrap functions that can spuriously wake up in a loop
CONCURRENCY.BADFUNC.PTHREAD_KILLPOS44-C. Do not use signals to terminate threads
CONCURRENCY.C_ATOMICMSC23-C. Beware of vendor-specific library and language differences
CONCURRENCY.C_THREAD.ISDCON34-C. Declare objects shared between threads with appropriate storage durations
CONCURRENCY.DATARACESIG31-C. Do not access shared objects in signal handlers
CONCURRENCY.DATARACECON32-C. Prevent data races when accessing bit-fields from multiple threads
CONCURRENCY.DATARACECON43-C. Do not allow data races in multithreaded code
CONCURRENCY.DATARACEPOS49-C. When data must be accessed by multiple threads, provide a mutex and guarantee no adjacent data is also accessed
CONCURRENCY.DATARACECON07-C. Ensure that compound operations on shared variables are atomic
CONCURRENCY.DUPOS48-C. Do not unlock or destroy another POSIX thread's mutex
CONCURRENCY.LOCALARGCON31-C. Do not destroy a mutex while it is locked
CONCURRENCY.LOCALARGCON34-C. Declare objects shared between threads with appropriate storage durations
CONCURRENCY.LOCK.NOLOCKCON01-C. Acquire and release synchronization primitives in the same module, at the same level of abstraction
CONCURRENCY.LOCK.NOUNLOCKCON01-C. Acquire and release synchronization primitives in the same module, at the same level of abstraction
CONCURRENCY.LOCK.ORDERCON35-C. Avoid deadlock by locking in a predefined order
CONCURRENCY.LOCK.ORDERPOS51-C. Avoid deadlock with POSIX threads by locking in predefined order
CONCURRENCY.MAACON32-C. Prevent data races when accessing bit-fields from multiple threads
CONCURRENCY.MAACON40-C. Do not refer to an atomic variable twice in an expression
CONCURRENCY.MAACON43-C. Do not allow data races in multithreaded code
CONCURRENCY.MAAPOS49-C. When data must be accessed by multiple threads, provide a mutex and guarantee no adjacent data is also accessed
CONCURRENCY.STARVE.BLOCKINGPOS52-C. Do not perform operations that can block while holding a POSIX lock
CONCURRENCY.STARVE.BLOCKINGCON05-C. Do not perform operations that can block while holding a lock
CONCURRENCY.THREADLOCALMSC23-C. Beware of vendor-specific library and language differences
CONCURRENCY.TNJCON39-C. Do not join or detach a thread that was previously joined or detached
DIAG.UNEX.*MSC07-C. Detect and remove dead code
DIAG.UNEX.*MSC12-C. Detect and remove code that has no effect or is never executed
HARDCODED.AUTHMSC41-C. Never hard code sensitive information
HARDCODED.AUTHMSC18-C. Be careful while handling sensitive data, such as passwords, in program code
HARDCODED.DNSMSC41-C. Never hard code sensitive information
HARDCODED.KEYMSC41-C. Never hard code sensitive information
HARDCODED.KEYMSC18-C. Be careful while handling sensitive data, such as passwords, in program code
HARDCODED.SALTMSC41-C. Never hard code sensitive information
HARDCODED.SALTMSC18-C. Be careful while handling sensitive data, such as passwords, in program code
HARDCODED.SEEDMSC32-C. Properly seed pseudorandom number generators
HARDCODED.SEEDMSC41-C. Never hard code sensitive information
IO.BRAWFIO24-C. Do not open a file that is already open
IO.INJ.COMMANDENV33-C. Do not call system()
IO.INJ.COMMANDSTR02-C. Sanitize data passed to complex subsystems
IO.INJ.FMTFIO30-C. Exclude user input from format strings
IO.INJ.FMTFIO47-C. Use valid format strings
IO.INJ.FMTSTR02-C. Sanitize data passed to complex subsystems
IO.INJ.LDAPSTR02-C. Sanitize data passed to complex subsystems
IO.INJ.LIBSTR02-C. Sanitize data passed to complex subsystems
IO.INJ.SQLSTR02-C. Sanitize data passed to complex subsystems
IO.IOWOPFIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
IO.OIWOPFIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
IO.RACEFIO45-C. Avoid TOCTOU race conditions while accessing files
IO.RACEFIO01-C. Be careful using functions that use file names for identification
IO.RACEFIO24-C. Do not open a file that is already open
IO.TAINT.ADDRINT04-C. Enforce limits on integer values originating from tainted sources
IO.TAINT.FNAMEFIO01-C. Be careful using functions that use file names for identification
IO.TAINT.FNAMEFIO02-C. Canonicalize path names originating from tainted sources
IO.TAINT.SIZEMEM35-C. Allocate sufficient memory for an object
IO.TAINT.SIZEINT04-C. Enforce limits on integer values originating from tainted sources
IO.TAINT.SIZEMEM05-C. Avoid large stack allocations
IO.TAINT.SIZEMEM11-C. Do not assume infinite heap space
IO.UACFIO46-C. Do not access a closed file
IO.UT.HOSTINT04-C. Enforce limits on integer values originating from tainted sources
IO.UT.LIBSTR02-C. Sanitize data passed to complex subsystems
IO.UT.PORTINT04-C. Enforce limits on integer values originating from tainted sources
IO.UT.PROCSTR02-C. Sanitize data passed to complex subsystems
LANG.ARITH.BIGSHIFTINT34-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
LANG.ARITH.BIGSHIFTINT35-C. Use correct integer precisions
LANG.ARITH.DIVZEROINT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors
LANG.ARITH.FDIVZEROINT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors
LANG.ARITH.FMULOFLOWFLP00-C. Understand the limitations of floating-point numbers
LANG.ARITH.FPEQUALFLP00-C. Understand the limitations of floating-point numbers
LANG.ARITH.FPEQUALFLP02-C. Avoid using floating-point numbers when precise computation is needed
LANG.ARITH.NEGSHIFTINT34-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
LANG.CAST.ARRAY.TEMPEXP35-C. Do not modify objects with temporary lifetime
LANG.CAST.ARRAY.TEMPARR00-C. Understand how arrays work
LANG.CAST.COERCEINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
LANG.CAST.COERCEFIO34-C. Distinguish between characters read from a file and EOF or WEOF
LANG.CAST.COERCEAPI07-C. Enforce type safety
LANG.CAST.COERCEINT02-C. Understand integer conversion rules
LANG.CAST.COERCEINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
LANG.CAST.PC.AVINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
LANG.CAST.PC.CONST2PTRINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
LANG.CAST.PC.CONST2PTRINT36-C. Converting a pointer to integer or integer to pointer
LANG.CAST.PC.CRCQDCL00-C. Const-qualify immutable objects
LANG.CAST.PC.CRCQEXP05-C. Do not cast away a const qualification
LANG.CAST.PC.DCVBASEEXP36-C. Do not cast pointers into more strictly aligned pointer types
LANG.CAST.PC.INTINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
LANG.CAST.PC.INTINT36-C. Converting a pointer to integer or integer to pointer
LANG.CAST.PC.OBJEXP36-C. Do not cast pointers into more strictly aligned pointer types
LANG.CAST.PC.VBASEEXP36-C. Do not cast pointers into more strictly aligned pointer types
LANG.CAST.RIPEXP14-C. Beware of integer promotion when performing bitwise operations on integer types smaller than int
LANG.CAST.VALUEINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
LANG.CAST.VALUEAPI07-C. Enforce type safety
LANG.CAST.VALUEINT02-C. Understand integer conversion rules
LANG.CAST.VALUEINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
LANG.ERRCODE.NOTESTERR33-C. Detect and handle standard library errors
LANG.ERRCODE.NOTESTPOS54-C. Detect and handle POSIX library errors
LANG.ERRCODE.NZERR33-C. Detect and handle standard library errors
LANG.ERRCODE.NZPOS54-C. Detect and handle POSIX library errors
LANG.FUNCS.APMEXP37-C. Call functions with the correct number and type of arguments
LANG.FUNCS.ASSERTSMSC11-C. Incorporate diagnostic tests using assertions
LANG.FUNCS.IRVERR33-C. Detect and handle standard library errors
LANG.FUNCS.IRVPOS54-C. Detect and handle POSIX library errors
LANG.FUNCS.IRVEXP12-C. Do not ignore values returned by functions
LANG.FUNCS.NORETURNMSC23-C. Beware of vendor-specific library and language differences
LANG.FUNCS.PROTDCL07-C. Include the appropriate type information in function declarators
LANG.FUNCS.PROTDCL20-C. Explicitly specify void when a function accepts no arguments
LANG.ID.AMBIGDCL02-C. Use visually distinct identifiers
LANG.ID.ND.EXTDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.ND.MMDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.ND.MODCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.ND.NESTDCL01-C. Do not reuse variable names in subscopes
LANG.ID.ND.NESTDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.ND.SSDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.NU.EXTDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.NU.INTDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.NU.LIBFNDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.NU.TAGDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.ID.NU.TYPEDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.MEM.BOARR30-C. Do not form or use out-of-bounds pointers or array subscripts
LANG.MEM.BOARR37-C. Do not add or subtract an integer to a pointer to a non-array object
LANG.MEM.BOARR38-C. Guarantee that library functions do not form invalid pointers
LANG.MEM.BOARR39-C. Do not add or subtract a scaled integer to a pointer
LANG.MEM.BOSTR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
LANG.MEM.BOSTR38-C. Do not confuse narrow and wide character strings and functions
LANG.MEM.BOMEM35-C. Allocate sufficient memory for an object
LANG.MEM.BOPOS30-C. Use the readlink() function properly
LANG.MEM.BOENV01-C. Do not make assumptions about the size of an environment variable
LANG.MEM.BOEXP08-C. Ensure pointer arithmetic is used correctly
LANG.MEM.BUARR30-C. Do not form or use out-of-bounds pointers or array subscripts
LANG.MEM.BUARR37-C. Do not add or subtract an integer to a pointer to a non-array object
LANG.MEM.BUARR38-C. Guarantee that library functions do not form invalid pointers
LANG.MEM.BUARR39-C. Do not add or subtract a scaled integer to a pointer
LANG.MEM.BUMEM35-C. Allocate sufficient memory for an object
LANG.MEM.BUEXP08-C. Ensure pointer arithmetic is used correctly
LANG.MEM.NPDEXP34-C. Do not dereference null pointers
LANG.MEM.TBAINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
LANG.MEM.TBAARR30-C. Do not form or use out-of-bounds pointers or array subscripts
LANG.MEM.TBAARR37-C. Do not add or subtract an integer to a pointer to a non-array object
LANG.MEM.TBAARR39-C. Do not add or subtract a scaled integer to a pointer
LANG.MEM.TBASTR38-C. Do not confuse narrow and wide character strings and functions
LANG.MEM.TBAMEM35-C. Allocate sufficient memory for an object
LANG.MEM.TBAPOS30-C. Use the readlink() function properly
LANG.MEM.TBAEXP08-C. Ensure pointer arithmetic is used correctly
LANG.MEM.TBAINT04-C. Enforce limits on integer values originating from tainted sources
LANG.MEM.TOARR30-C. Do not form or use out-of-bounds pointers or array subscripts
LANG.MEM.TOARR37-C. Do not add or subtract an integer to a pointer to a non-array object
LANG.MEM.TOARR39-C. Do not add or subtract a scaled integer to a pointer
LANG.MEM.TOSTR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
LANG.MEM.TOMEM35-C. Allocate sufficient memory for an object
LANG.MEM.TOENV01-C. Do not make assumptions about the size of an environment variable
LANG.MEM.TOEXP08-C. Ensure pointer arithmetic is used correctly
LANG.MEM.TUARR30-C. Do not form or use out-of-bounds pointers or array subscripts
LANG.MEM.TUARR37-C. Do not add or subtract an integer to a pointer to a non-array object
LANG.MEM.TUARR39-C. Do not add or subtract a scaled integer to a pointer
LANG.MEM.TUMEM35-C. Allocate sufficient memory for an object
LANG.MEM.TUEXP08-C. Ensure pointer arithmetic is used correctly
LANG.MEM.UVAREXP33-C. Do not read uninitialized memory
LANG.MEM.UVARFIO40-C. Reset strings on fgets() or fgetws() failure
LANG.PREPROC.FUNCMACROPRE31-C. Avoid side effects in arguments to unsafe macros
LANG.PREPROC.FUNCMACROPRE00-C. Prefer inline or static functions to function-like macros
LANG.PREPROC.HASHPRE05-C. Understand macro replacement when concatenating tokens or performing stringification
LANG.PREPROC.INCL.TGMATH_HMSC23-C. Beware of vendor-specific library and language differences
LANG.PREPROC.MACROARGPRE32-C. Do not use preprocessor directives in invocations of function-like macros
LANG.PREPROC.MACROENDPRE02-C. Macro replacement lists should be parenthesized
LANG.PREPROC.MACROENDPRE11-C. Do not conclude macro definitions with a semicolon
LANG.PREPROC.MACROSTARTPRE02-C. Macro replacement lists should be parenthesized
LANG.PREPROC.MARGMEPRE05-C. Understand macro replacement when concatenating tokens or performing stringification
LANG.PREPROC.PASTEPRE30-C. Do not create a universal character name through concatenation
LANG.PREPROC.PASTEPRE05-C. Understand macro replacement when concatenating tokens or performing stringification
LANG.PREPROC.PASTEHASHPRE30-C. Do not create a universal character name through concatenation
LANG.STRUCT.ALIGNASMSC23-C. Beware of vendor-specific library and language differences
LANG.STRUCT.ALIGNAS.EZAMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.ALIGNAS.EZAMSC23-C. Beware of vendor-specific library and language differences
LANG.STRUCT.ALIGNAS.IASMSC23-C. Beware of vendor-specific library and language differences
LANG.STRUCT.ALIGNAS.TMASMSC23-C. Beware of vendor-specific library and language differences
LANG.STRUCT.ALIGNOFMSC23-C. Beware of vendor-specific library and language differences
LANG.STRUCT.CONDASSIGEXP45-C. Do not perform assignments in selection statements
LANG.STRUCT.CUPARR36-C. Do not subtract or compare two pointers that do not refer to the same array
LANG.STRUCT.CUPEXP08-C. Ensure pointer arithmetic is used correctly
LANG.STRUCT.DECL.FAMMEM33-C. Allocate and copy structures containing a flexible array member dynamically
LANG.STRUCT.DECL.IFDCL40-C. Do not create incompatible declarations of the same function or object
LANG.STRUCT.DECL.IMPFNMSC23-C. Beware of vendor-specific library and language differences
LANG.STRUCT.DECL.IODCL40-C. Do not create incompatible declarations of the same function or object
LANG.STRUCT.DECL.MGTDCL23-C. Guarantee that mutually visible identifiers are unique
LANG.STRUCT.DECL.MLDCL04-C. Do not declare more than one variable per declaration
LANG.STRUCT.DECL.NOEXTDCL36-C. Do not declare an identifier with conflicting linkage classifications
LANG.STRUCT.DECL.RESERVEDDCL37-C. Do not declare or define a reserved identifier
LANG.STRUCT.DECL.VLAMSC23-C. Beware of vendor-specific library and language differences
LANG.STRUCT.EBSEXP15-C. Do not place a semicolon on the same line as an if, for, or while statement
LANG.STRUCT.EBSMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.ELLIPSISDCL11-C. Understand the type issues associated with variadic functions
LANG.STRUCT.ICOLCON36-C. Wrap functions that can spuriously wake up in a loop
LANG.STRUCT.ICOLCON41-C. Wrap functions that can fail spuriously in a loop
LANG.STRUCT.INIT.ENUMINT09-C. Ensure enumeration constants map to unique values
LANG.STRUCT.INIT.UADIMSC23-C. Beware of vendor-specific library and language differences
LANG.STRUCT.LOOP.FPCFLP30-C. Do not use floating-point variables as loop counters
LANG.STRUCT.LOOP.HRMSC21-C. Use robust loop termination conditions
LANG.STRUCT.LOOP.UBMSC21-C. Use robust loop termination conditions
LANG.STRUCT.MRSMSC37-C. Ensure that control never reaches the end of a non-void function
LANG.STRUCT.NTADEXP34-C. Do not dereference null pointers
LANG.STRUCT.PARENSEXP00-C. Use parentheses for precedence of operation
LANG.STRUCT.PARITHARR30-C. Do not form or use out-of-bounds pointers or array subscripts
LANG.STRUCT.PARITHARR37-C. Do not add or subtract an integer to a pointer to a non-array object
LANG.STRUCT.PARITHARR39-C. Do not add or subtract a scaled integer to a pointer
LANG.STRUCT.PARITHMEM35-C. Allocate sufficient memory for an object
LANG.STRUCT.PARITHEXP08-C. Ensure pointer arithmetic is used correctly
LANG.STRUCT.PBBARR30-C. Do not form or use out-of-bounds pointers or array subscripts
LANG.STRUCT.PBBARR37-C. Do not add or subtract an integer to a pointer to a non-array object
LANG.STRUCT.PBBARR39-C. Do not add or subtract a scaled integer to a pointer
LANG.STRUCT.PBBMEM35-C. Allocate sufficient memory for an object
LANG.STRUCT.PBBEXP08-C. Ensure pointer arithmetic is used correctly
LANG.STRUCT.PITDCL05-C. Use typedefs of non-pointer types only
LANG.STRUCT.PPEARR30-C. Do not form or use out-of-bounds pointers or array subscripts
LANG.STRUCT.PPEARR37-C. Do not add or subtract an integer to a pointer to a non-array object
LANG.STRUCT.PPEARR39-C. Do not add or subtract a scaled integer to a pointer
LANG.STRUCT.PPEMEM35-C. Allocate sufficient memory for an object
LANG.STRUCT.PPEEXP08-C. Ensure pointer arithmetic is used correctly
LANG.STRUCT.RCERR30-C. Take care when reading errno
LANG.STRUCT.RCMSC07-C. Detect and remove dead code
LANG.STRUCT.RCMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.RFCESHSIG35-C. Do not return from a computational exception signal handler
LANG.STRUCT.RPLDCL30-C. Declare objects with appropriate storage durations
LANG.STRUCT.RPNTCENV30-C. Do not modify the object referenced by the return value of certain functions
LANG.STRUCT.RPNTCDCL00-C. Const-qualify immutable objects
LANG.STRUCT.SCOPE.FILEDCL15-C. Declare file-scope objects or functions that do not need external linkage as static
LANG.STRUCT.SCOPE.FILEDCL19-C. Minimize the scope of variables and functions
LANG.STRUCT.SCOPE.LOCALDCL19-C. Minimize the scope of variables and functions
LANG.STRUCT.SE.CGENEXP44-C. Do not rely on side effects in operands to sizeof, _Alignof, or _Generic
LANG.STRUCT.SE.CONDEXP45-C. Do not perform assignments in selection statements
LANG.STRUCT.SE.DECPRE31-C. Avoid side effects in arguments to unsafe macros
LANG.STRUCT.SE.DECEXP30-C. Do not depend on the order of evaluation for side effects
LANG.STRUCT.SE.INCPRE31-C. Avoid side effects in arguments to unsafe macros
LANG.STRUCT.SE.INCEXP30-C. Do not depend on the order of evaluation for side effects
LANG.STRUCT.SE.INITEXP30-C. Do not depend on the order of evaluation for side effects
LANG.STRUCT.SE.IOEEXP10-C. Do not depend on the order of evaluation of subexpressions or the order in which side effects take place
LANG.STRUCT.SE.SIZEOFEXP44-C. Do not rely on side effects in operands to sizeof, _Alignof, or _Generic
LANG.STRUCT.SUPARR36-C. Do not subtract or compare two pointers that do not refer to the same array
LANG.STRUCT.SUPEXP08-C. Ensure pointer arithmetic is used correctly
LANG.STRUCT.SW.BADDCL41-C. Do not declare variables inside a switch statement before the first case label
LANG.STRUCT.SW.MBMSC17-C. Finish every set of statements associated with a case label with a break statement
LANG.STRUCT.SW.MPCMSC20-C. Do not use a switch statement to transfer control into a complex block
LANG.STRUCT.SW.SWNEEDCL06-C. Use meaningful symbolic constants to represent literal values
LANG.STRUCT.UAMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.UCMSC07-C. Detect and remove dead code
LANG.STRUCT.UCMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.UPDEXP34-C. Do not dereference null pointers
LANG.STRUCT.UPDAPI00-C. Functions should validate their parameters
LANG.STRUCT.USEASSIGNEXP45-C. Do not perform assignments in selection statements
LANG.STRUCT.UULABELMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.UUMACROMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.UUPARAMMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.UUTAGMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.UUTYPEMSC12-C. Detect and remove code that has no effect or is never executed
LANG.STRUCT.UUVALMSC13-C. Detect and remove unused values
LANG.STRUCT.UUVARMSC12-C. Detect and remove code that has no effect or is never executed
LANG.TYPE.AWIDINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
LANG.TYPE.BASICINT01-C. Use size_t or rsize_t for all integer values representing the size of an object
LANG.TYPE.BFSIGNINT12-C. Do not make assumptions about the type of a plain int bit-field when used in an expression
LANG.TYPE.CBCONSTDCL13-C. Declare function parameters that are pointers to values not changed by the function as const
LANG.TYPE.CSUFDCL16-C. Use "L," not "l," to indicate a long value
LANG.TYPE.IATFLP34-C. Ensure that floating-point conversions are within range of the new type
LANG.TYPE.IATFLP36-C. Preserve precision when converting integral values to floating-point type
LANG.TYPE.IATSTR04-C. Use plain char for characters in the basic character set
LANG.TYPE.ICASTR04-C. Use plain char for characters in the basic character set
LANG.TYPE.IOTEXP46-C. Do not use a bitwise operator with a Boolean-like operand
LANG.TYPE.IOTINT07-C. Use only explicitly signed or unsigned char type for numeric values
LANG.TYPE.IOTINT13-C. Use bitwise operators only on unsigned operands
LANG.TYPE.IOTSTR04-C. Use plain char for characters in the basic character set
LANG.TYPE.IVDCON02-C. Do not use volatile as a synchronization primitive
LANG.TYPE.MOTFLP06-C. Convert integers to floating point for floating-point operations
LANG.TYPE.MOTSTR04-C. Use plain char for characters in the basic character set
LANG.TYPE.NCSSTR05-C. Use pointers to const when referring to string literals
LANG.TYPE.OCDCL18-C. Do not begin integer constants with 0 when specifying a decimal value
LANG.TYPE.OWIDINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
LANG.TYPE.RESTRICTEXP43-C. Avoid undefined behavior when using restrict-qualified pointers
LANG.TYPE.SAPARR01-C. Do not apply the sizeof operator to a pointer when taking the size of an array
LANG.TYPE.VCBCDCL00-C. Const-qualify immutable objects
LANG.TYPE.VMATMSC23-C. Beware of vendor-specific library and language differences
MATH.DOMAINFLP32-C. Prevent or detect domain and range errors in math functions
MATH.DOMAIN.ATANFLP32-C. Prevent or detect domain and range errors in math functions
MATH.DOMAIN.FE_INVALIDFLP32-C. Prevent or detect domain and range errors in math functions
MATH.DOMAIN.LOGFLP32-C. Prevent or detect domain and range errors in math functions
MATH.DOMAIN.POWFLP32-C. Prevent or detect domain and range errors in math functions
MATH.DOMAIN.SQRTFLP32-C. Prevent or detect domain and range errors in math functions
MATH.DOMAIN.TOOHIGHFLP32-C. Prevent or detect domain and range errors in math functions
MATH.DOMAIN.TOOLOWFLP32-C. Prevent or detect domain and range errors in math functions
MATH.RANGEFLP32-C. Prevent or detect domain and range errors in math functions
MATH.RANGE.COSH.TOOHIGHFLP32-C. Prevent or detect domain and range errors in math functions
MATH.RANGE.COSH.TOOLOWFLP32-C. Prevent or detect domain and range errors in math functions
MATH.RANGE.GAMMAFLP32-C. Prevent or detect domain and range errors in math functions
MATH.RANGE.GAMMAMSC23-C. Beware of vendor-specific library and language differences
MATH.RANGE.LOGFLP32-C. Prevent or detect domain and range errors in math functions
MISC.CHROOT.NOCHDIRPOS05-C. Limit access to files by creating a jail
MISC.CRYPTO.TIMESEEDMSC32-C. Properly seed pseudorandom number generators
MISC.FMTFIO30-C. Exclude user input from format strings
MISC.FMTFIO47-C. Use valid format strings
MISC.FMTTYPEFIO47-C. Use valid format strings
MISC.MEM.NTERMSTR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
MISC.MEM.NTERMSTR03-C. Do not inadvertently truncate a string
MISC.MEM.NTERM.CSTRINGSTR32-C. Do not pass a non-null-terminated character sequence to a library function that expects a string
MISC.MEM.NTERM.CSTRINGPOS30-C. Use the readlink() function properly
MISC.MEM.SIZE.ADDOFLOWINT30-C. Ensure that unsigned integer operations do not wrap
MISC.MEM.SIZE.ADDOFLOWINT32-C. Ensure that operations on signed integers do not result in overflow
MISC.MEM.SIZE.ADDOFLOWINT08-C. Verify that all integer values are in range
MISC.MEM.SIZE.ADDOFLOWINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
MISC.MEM.SIZE.BADINT30-C. Ensure that unsigned integer operations do not wrap
MISC.MEM.SIZE.BADINT32-C. Ensure that operations on signed integers do not result in overflow
MISC.MEM.SIZE.BADARR32-C. Ensure size arguments for variable length arrays are in a valid range
MISC.MEM.SIZE.BADMEM35-C. Allocate sufficient memory for an object
MISC.MEM.SIZE.BADINT08-C. Verify that all integer values are in range
MISC.MEM.SIZE.BADINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
MISC.MEM.SIZE.BADMEM05-C. Avoid large stack allocations
MISC.MEM.SIZE.BADMEM11-C. Do not assume infinite heap space
MISC.MEM.SIZE.MULOFLOWINT30-C. Ensure that unsigned integer operations do not wrap
MISC.MEM.SIZE.MULOFLOWINT32-C. Ensure that operations on signed integers do not result in overflow
MISC.MEM.SIZE.MULOFLOWINT08-C. Verify that all integer values are in range
MISC.MEM.SIZE.MULOFLOWINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
MISC.MEM.SIZE.SUBUFLOWINT30-C. Ensure that unsigned integer operations do not wrap
MISC.MEM.SIZE.SUBUFLOWINT32-C. Ensure that operations on signed integers do not result in overflow
MISC.MEM.SIZE.SUBUFLOWINT08-C. Verify that all integer values are in range
MISC.MEM.SIZE.SUBUFLOWINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
MISC.MEM.SIZE.TRUNCINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
MISC.MEM.SIZE.TRUNCINT02-C. Understand integer conversion rules
MISC.MEM.SIZE.TRUNCINT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
MISC.NEGCHARSTR34-C. Cast characters to unsigned char before converting to larger integer sizes
MISC.NEGCHARSTR37-C. Arguments to character-handling functions must be representable as an unsigned char
MISC.NEGCHARINT05-C. Do not use input functions to convert character data if they cannot handle all possible inputs
MISC.NEGCHARSTR00-C. Represent characters using an appropriate type
MISC.NOEFFECTMSC12-C. Detect and remove code that has no effect or is never executed
MISC.PADDING.POTBDCL39-C. Avoid information leakage when passing a structure across a trust boundary
MISC.PWD.PLAINMSC18-C. Be careful while handling sensitive data, such as passwords, in program code
MISC.PWD.PLAINTRANMSC18-C. Be careful while handling sensitive data, such as passwords, in program code
PARSE.BAD.TOKENMSC09-C. Character encoding: Use subset of ASCII for safety
PARSE.BIHMSC20-C. Do not use a switch statement to transfer control into a complex block
PARSE.BITBMSC20-C. Do not use a switch statement to transfer control into a complex block
PARSE.DBNRMSC12-C. Detect and remove code that has no effect or is never executed
PARSE.DEMSC24-C. Do not use deprecated or obsolescent functions
PARSE.IMPLICIT.IOMDCL07-C. Include the appropriate type information in function declarators
PARSE.MISSING.DSDCL07-C. Include the appropriate type information in function declarators
PARSE.MISSING.TSDCL07-C. Include the appropriate type information in function declarators
PARSE.NONSTD.IIDCL07-C. Include the appropriate type information in function declarators
PARSE.PCLBINT36-C. Converting a pointer to integer or integer to pointer
PARSE.PCTSSIINT36-C. Converting a pointer to integer or integer to pointer
PARSE.PILNFDDCL07-C. Include the appropriate type information in function declarators
PARSE.UNDECLPARAMDCL07-C. Include the appropriate type information in function declarators