GitHub
CERT Secure Coding

Axivion Bauhaus Suite

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: 7.2.0

CheckerGuideline
CertC-ARR01ARR01-C. Do not apply the sizeof operator to a pointer when taking the size of an array
CertC-ARR02ARR02-C. Explicitly specify array bounds, even if implicitly defined by an initializer
CertC-ARR30ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
CertC-ARR36ARR36-C. Do not subtract or compare two pointers that do not refer to the same array
CertC-ARR37ARR37-C. Do not add or subtract an integer to a pointer to a non-array object
CertC-ARR39ARR39-C. Do not add or subtract a scaled integer to a pointer
CertC-CON32CON32-C. Prevent data races when accessing bit-fields from multiple threads
CertC-CON40CON40-C. Do not refer to an atomic variable twice in an expression
CertC-DCL00DCL00-C. Const-qualify immutable objects
CertC-DCL01DCL01-C. Do not reuse variable names in subscopes
CertC-DCL02DCL02-C. Use visually distinct identifiers
CertC-DCL03DCL03-C. Use a static assertion to test the value of a constant expression
CertC-DCL04DCL04-C. Do not declare more than one variable per declaration
CertC-DCL05DCL05-C. Use typedefs of non-pointer types only
CertC-DCL06DCL06-C. Use meaningful symbolic constants to represent literal values
CertC-DCL07DCL07-C. Include the appropriate type information in function declarators
CertC-DCL09DCL09-C. Declare functions that return errno with a return type of errno_t
CertC-DCL11DCL11-C. Understand the type issues associated with variadic functions
CertC-DCL12DCL12-C. Implement abstract data types using opaque types
CertC-DCL13DCL13-C. Declare function parameters that are pointers to values not changed by the function as const
CertC-DCL15DCL15-C. Declare file-scope objects or functions that do not need external linkage as static
CertC-DCL16DCL16-C. Use "L," not "l," to indicate a long value
CertC-DCL18DCL18-C. Do not begin integer constants with 0 when specifying a decimal value
CertC-DCL19DCL19-C. Minimize the scope of variables and functions
CertC-DCL20DCL20-C. Explicitly specify void when a function accepts no arguments
CertC-DCL21DCL21-C. Understand the storage of compound literals
CertC-DCL23DCL23-C. Guarantee that mutually visible identifiers are unique
CertC-DCL30DCL30-C. Declare objects with appropriate storage durations
CertC-DCL31DCL31-C. Declare identifiers before using them
CertC-DCL36DCL36-C. Do not declare an identifier with conflicting linkage classifications
CertC-DCL37DCL37-C. Do not declare or define a reserved identifier
CertC-DCL38DCL38-C. Use the correct syntax when declaring a flexible array member
CertC-DCL39DCL39-C. Avoid information leakage when passing a structure across a trust boundary
CertC-DCL40DCL40-C. Do not create incompatible declarations of the same function or object
CertC-DCL41DCL41-C. Do not declare variables inside a switch statement before the first case label
CertC-ENV30ENV30-C. Do not modify the object referenced by the return value of certain functions
CertC-ENV32ENV32-C. All exit handlers must return normally
CertC-ENV33ENV33-C. Do not call system()
CertC-ERR07ERR07-C. Prefer functions that support error checking over equivalent functions that don't
CertC-ERR30ERR30-C. Take care when reading errno
CertC-ERR32ERR32-C. Do not rely on indeterminate values of errno
CertC-ERR33ERR33-C. Detect and handle standard library errors
CertC-ERR34ERR34-C. Detect errors when converting a string to a number
CertC-EXP00EXP00-C. Use parentheses for precedence of operation
CertC-EXP02EXP02-C. Be aware of the short-circuit behavior of the logical AND and OR operators
CertC-EXP05EXP05-C. Do not cast away a const qualification
CertC-EXP07EXP07-C. Do not diminish the benefits of constants by assuming their values in expressions
CertC-EXP10EXP10-C. Do not depend on the order of evaluation of subexpressions or the order in which side effects take place
CertC-EXP12EXP12-C. Do not ignore values returned by functions
CertC-EXP14EXP14-C. Beware of integer promotion when performing bitwise operations on integer types smaller than int
CertC-EXP15EXP15-C. Do not place a semicolon on the same line as an if, for, or while statement
CertC-EXP19EXP19-C. Use braces for the body of an if, for, or while statement
CertC-EXP20EXP20-C. Perform explicit tests to determine success, true and false, and equality
CertC-EXP30EXP30-C. Do not depend on the order of evaluation for side effects
CertC-EXP32EXP32-C. Do not access a volatile object through a nonvolatile reference
CertC-EXP33EXP33-C. Do not read uninitialized memory
CertC-EXP34EXP34-C. Do not dereference null pointers
CertC-EXP35EXP35-C. Do not modify objects with temporary lifetime
CertC-EXP36EXP36-C. Do not cast pointers into more strictly aligned pointer types
CertC-EXP37EXP37-C. Call functions with the correct number and type of arguments
CertC-EXP40EXP40-C. Do not modify constant objects
CertC-EXP42EXP42-C. Do not compare padding data
CertC-EXP44EXP44-C. Do not rely on side effects in operands to sizeof, _Alignof, or _Generic
CertC-EXP45EXP45-C. Do not perform assignments in selection statements
CertC-EXP46EXP46-C. Do not use a bitwise operator with a Boolean-like operand
CertC-FIO30FIO30-C. Exclude user input from format strings
CertC-FIO34FIO34-C. Distinguish between characters read from a file and EOF or WEOF
CertC-FIO38FIO38-C. Do not copy a FILE object
CertC-FIO39FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
CertC-FIO41FIO41-C. Do not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effects
CertC-FIO47FIO47-C. Use valid format strings
CertC-FLP02FLP02-C. Avoid using floating-point numbers when precise computation is needed
CertC-FLP06FLP06-C. Convert integers to floating point for floating-point operations
CertC-FLP07FLP07-C. Cast the return value of a function that returns a floating-point type
CertC-FLP30FLP30-C. Do not use floating-point variables as loop counters
CertC-FLP32FLP32-C. Prevent or detect domain and range errors in math functions
CertC-FLP37FLP37-C. Do not use object representations to compare floating-point values
CertC-INT00INT00-C. Understand the data model used by your implementation(s)
CertC-INT01INT01-C. Use size_t or rsize_t for all integer values representing the size of an object
CertC-INT05INT05-C. Do not use input functions to convert character data if they cannot handle all possible inputs
CertC-INT07INT07-C. Use only explicitly signed or unsigned char type for numeric values
CertC-INT08INT08-C. Verify that all integer values are in range
CertC-INT09INT09-C. Ensure enumeration constants map to unique values
CertC-INT12INT12-C. Do not make assumptions about the type of a plain int bit-field when used in an expression
CertC-INT13INT13-C. Use bitwise operators only on unsigned operands
CertC-INT15INT15-C. Use intmax_t or uintmax_t for formatted IO on programmer-defined integer types
CertC-INT17INT17-C. Define integer constants in an implementation-independent manner
CertC-INT30INT30-C. Ensure that unsigned integer operations do not wrap
CertC-INT33INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors
CertC-INT34INT34-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
CertC-INT36INT36-C. Converting a pointer to integer or integer to pointer
CertC-MEM01MEM01-C. Store a new value in pointers immediately after free()
CertC-MEM02MEM02-C. Immediately cast the result of a memory allocation function call into a pointer to the allocated type
CertC-MEM30MEM30-C. Do not access freed memory
CertC-MEM31MEM31-C. Free dynamically allocated memory when no longer needed
CertC-MEM33MEM33-C. Allocate and copy structures containing a flexible array member dynamically
CertC-MEM34MEM34-C. Only free memory allocated dynamically
CertC-MEM35MEM35-C. Allocate sufficient memory for an object
CertC-MEM36MEM36-C. Do not modify the alignment of objects by calling realloc()
CertC-MSC24MSC24-C. Do not use deprecated or obsolescent functions
CertC-MSC30MSC30-C. Do not use the rand() function for generating pseudorandom numbers
CertC-MSC32MSC32-C. Properly seed pseudorandom number generators
CertC-MSC33MSC33-C. Do not pass invalid data to the asctime() function
CertC-MSC37MSC37-C. Ensure that control never reaches the end of a non-void function
CertC-POS30POS30-C. Use the readlink() function properly
CertC-POS34POS34-C. Do not call putenv() with a pointer to an automatic variable as the argument
CertC-POS35POS35-C. Avoid race conditions while checking for the existence of a symbolic link
CertC-POS36POS36-C. Observe correct revocation order while relinquishing privileges
CertC-POS37POS37-C. Ensure that privilege relinquishment is successful
CertC-POS39POS39-C. Use the correct byte ordering when transferring data between systems
CertC-POS47POS47-C. Do not use threads that can be canceled asynchronously
CertC-POS49POS49-C. When data must be accessed by multiple threads, provide a mutex and guarantee no adjacent data is also accessed
CertC-POS54POS54-C. Detect and handle POSIX library errors
CertC-PRE00PRE00-C. Prefer inline or static functions to function-like macros
CertC-PRE01PRE01-C. Use parentheses within macros around parameter names
CertC-PRE02PRE02-C. Macro replacement lists should be parenthesized
CertC-PRE04PRE04-C. Do not reuse a standard header file name
CertC-PRE05PRE05-C. Understand macro replacement when concatenating tokens or performing stringification
CertC-PRE06PRE06-C. Enclose header files in an include guard
CertC-PRE07PRE07-C. Avoid using repeated question marks
CertC-PRE08PRE08-C. Guarantee that header file names are unique
CertC-PRE09PRE09-C. Do not replace secure functions with deprecated or obsolescent functions
CertC-PRE10PRE10-C. Wrap multistatement macros in a do-while loop
CertC-PRE11PRE11-C. Do not conclude macro definitions with a semicolon
CertC-PRE12PRE12-C. Do not define unsafe macros
CertC-PRE13PRE13-C. Use the Standard predefined macros to test for versions and features.
CertC-PRE30PRE30-C. Do not create a universal character name through concatenation
CertC-PRE31PRE31-C. Avoid side effects in arguments to unsafe macros
CertC-PRE32PRE32-C. Do not use preprocessor directives in invocations of function-like macros
CertC-SIG30SIG30-C. Call only asynchronous-safe functions within signal handlers
CertC-SIG31SIG31-C. Do not access shared objects in signal handlers
CertC-SIG34SIG34-C. Do not call signal() from within interruptible signal handlers
CertC-SIG35SIG35-C. Do not return from a computational exception signal handler
CertC-STR04STR04-C. Use plain char for characters in the basic character set
CertC-STR05STR05-C. Use pointers to const when referring to string literals
CertC-STR09STR09-C. Don't assume numeric values for expressions with type plain character
CertC-STR10STR10-C. Do not concatenate different type of string literals
CertC-STR11STR11-C. Do not specify the bound of a character array initialized with a string literal
CertC-STR30STR30-C. Do not attempt to modify string literals
CertC-STR31STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
CertC-STR32STR32-C. Do not pass a non-null-terminated character sequence to a library function that expects a string
CertC-STR34STR34-C. Cast characters to unsigned char before converting to larger integer sizes
CertC-STR37STR37-C. Arguments to character-handling functions must be representable as an unsigned char
CertC-STR38STR38-C. Do not confuse narrow and wide character strings and functions