Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

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.

CERT Rule

Related GuidelineGuidelines

EXP33STR34-C. Do not read uninitialized memoryCWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
CWE-123, Write-what-where Condition
CWE-125, Out-of-bounds Read
CWE-665, Improper Initialization
EXP34-C. Do not dereference null pointersCWE-476, NULL Pointer Dereference
EXP37-C. Call functions with the correct number and type of arguments

CWE-628, Function Call with Incorrectly Specified Arguments
CWE-686, Function Call with Incorrect Argument Type

EXP39-C. Do not access a variable through a pointer of an incompatible typeCWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
CWE-123, Write-what-where Condition
CWE-125, Out-of-bounds Read
EXP45-C. Do not perform assignments in selection statementsCWE-480, Use of Incorrect Operator
EXP46-C. Do not use a bitwise operator with a Boolean-like operandCWE-480, Use of incorrect operator
INT30-C. Ensure that unsigned integer operations do not wrapCWE-190, Integer Overflow or Wraparound
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted dataCWE-192, Integer Coercion Error
CWE-197, Numeric Truncation Error
CWE-681, Incorrect Conversion between Numeric Types
INT32-C. Ensure that operations on signed integers do not result in overflowCWE-129, Improper Validation of Array Index
CWE-190, Integer Overflow or Wraparound
INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errorsCWE-369, Divide By Zero
INT35-C. Use correct integer precisionsCWE-190, Integer Overflow or Wraparound
INT36-C. Converting a pointer to integer or integer to pointerCWE-466, Return of Pointer Value Outside of Expected Range
CWE-587, Assignment of a Fixed Address to a Pointer
FLP32-C. Prevent or detect domain and range errors in math functionsCWE-682, Incorrect Calculation
FLP34-C. Ensure that floating-point conversions are within range of the new typeCWE-681, Incorrect Conversion between Numeric Types
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts

CWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
CWE-122, Heap-based Buffer Overflow
CWE-123, Write-what-where Condition
CWE-125, Out-of-bounds Read
CWE-129, Improper Validation of Array Index
CWE-788, Access of Memory Location after End of Buffer

ARR36-C. Do not subtract or compare two pointers that do not refer to the same arrayCWE-469, Use of Pointer Subtraction to Determine Size
ARR37-C. Do not add or subtract an integer to a pointer to a non-array objectCWE-469, Use of Pointer Subtraction to Determine Size
ARR38-C. Guarantee that library functions do not form invalid pointers

CWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
CWE-121, Stack-based Buffer Overflow
CWE-123, Write-what-where Condition
CWE-125, Out-of-bounds Read
CWE-805, Buffer Access with Incorrect Length Value 

ARR39-C. Do not add or subtract a scaled integer to a pointer

CWE 468, Incorrect Pointer Scaling

STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator

CWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
CWE-120, Buffer Copy without Checking Size of Input ("Classic Buffer Overflow")
CWE-123, Write-what-where Condition
CWE-125, Out-of-bounds Read
CWE-193, Off-by-one Error

STR32-C. Do not pass a non-null-terminated character sequence to a library function that expects a string

CWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
CWE-123, Write-what-where Condition
CWE-125, Out-of-bounds Read
CWE-170, Improper Null Termination

STR34-C. Cast characters to unsigned char before converting to larger integer sizesCWE-704, Incorrect Type Conversion or Cast
STR37-C. Arguments to character-handling functions must be representable as an unsigned charCWE-704, Incorrect Type Conversion or Cast
CWE-686, Function Call with Incorrect Argument Type
MEM30-C. Do not access freed memory

CWE-415, Double Free
CWE-416, Use After Free

MEM31-C. Free dynamically allocated memory when no longer needed

CWE-401, Improper Release of Memory Before Removing Last Reference ("Memory Leak")

MEM34-C. Only free memory allocated dynamicallyCWE-590, Free of Memory Not on the Heap
MEM35-C. Allocate sufficient memory for an objectCWE-131, Incorrect Calculation of Buffer Size
CWE-190, Integer Overflow or Wraparound
CWE-467
, Use of sizeof() on a Pointer Type 
FIO30-C. Exclude user input from format stringsCWE-134, Uncontrolled Format String
FIO32-C. Do not perform operations on devices that are only appropriate for filesCWE-67, Improper Handling of Windows Device Names
FIO37-C. Do not assume that fgets() or fgetws() returns a nonempty string when successfulCWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
CWE-123, Write-what-where Condition
CWE-125, Out-of-bounds Read
CWE-241, Improper Handling of Unexpected Data Type
FIO42-C. Close files when they are no longer neededCWE-404, Improper Resource Shutdown or Release
FIO47-C. Use valid format stringsCWE-686, Function Call with Incorrect Argument Type
ENV32-C. All exit handlers must return normallyCWE-705, Incorrect Control Flow Scoping
ENV33-C. Do not call system()CWE-78, Improper Neutralization of Special Elements Used in an OS Command (aka "OS Command Injection")
CWE-88, Argument Injection or Modification
SIG30-C. Call only asynchronous-safe functions within signal handlersCWE-479, Signal Handler Use of a Non-reentrant Function
SIG31-C. Do not access shared objects in signal handlersCWE-662, Improper Synchronization
SIG34-C. Do not call signal() from within interruptible signal handlersCWE-479, Signal Handler Use of a Non-reentrant Function
ERR30-C. Set errno to zero before calling a library function known to set errno, and check errno only after the function returns a value indicating failureCWE-456, Missing Initialization of a Variable
ERR33-C. Detect and handle standard library errorsCWE-252, Unchecked Return Value
CWE-253, Incorrect Check of Function Return Value
CWE-390, Detection of Error Condition without Action
CWE-391, Unchecked Error Condition
CWE-476, NULL Pointer Dereference
ERR34-C. Detect errors when converting a string to a number

CWE-676, Use of potentially dangerous function
CWE-20, Insufficient input validation

CON31-C. Do not destroy a mutex while it is lockedCWE-667, Improper Locking
CON35-C. Avoid deadlock by locking in a predefined orderCWE-764, Multiple Locks of a Critical Resource
CON40-C. Do not refer to an atomic variable twice in an expression

CWE-366, Race Condition within a Thread
CWE-413, Improper Resource Locking
CWE-567, Unsynchronized Access to Shared Data in a Multithreaded Context
CWE-667, Improper Locking

CON43-C. Do not allow data races in multithreaded codeCWE-366, Race condition within a thread
MSC30-C. Do not use the rand() function for generating pseudorandom numbersCWE-327, Use of a Broken or Risky Cryptographic Algorithm
CWE-330, Use of Insufficiently Random Values
CWE-331, Insufficient Entropy
CWE-338, Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
MSC32-C. Properly seed pseudorandom number generatorsCWE-327, Use of a Broken or Risky Cryptographic Algorithm
CWE-330, Use of Insufficiently Random Values
CWE-331, Insufficient Entropy
CWE-338, Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
POS30-C. Use the readlink() function properlyCWE-170, Improper null termination
POS33-C. Do not use vfork()CWE-242, Use of inherently dangerous function
POS34-C. Do not call putenv() with a pointer to an automatic variable as the argumentCWE-686, Function call with incorrect argument type
CWE-562, Return of stack variable address
POS35-C. Avoid race conditions while checking for the existence of a symbolic linkCWE-363, Race condition enabling link following
CWE-365, Race condition in switch
POS36-C. Observe correct revocation order while relinquishing privilegesCWE-250, Execution with unnecessary privileges
CWE-696, Incorrect behavior order
POS37-C. Ensure that privilege relinquishment is successfulCWE-250, Execution with unnecessary privileges
CWE-273, Failure to check whether privileges were dropped successfully
POS48-C. Do not unlock or destroy another POSIX thread's mutexCWE-667, Insufficient locking
POS51-C. Avoid deadlock with POSIX threads by locking in predefined orderCWE-764, Multiple locks of critical resources
POS54-C. Detect and handle POSIX library errorsCWE-252, Unchecked return value
CWE-253, Incorrect check of function return value
CWE-390, Detection of error condition without action
CWE-391, Unchecked error condition
API00-C. Functions should validate their parametersCWE ID 20, Insufficient input validation
API04-C. Provide a consistent and usable error-checking mechanismCWE-754, Improper check for unusual or exceptional conditions
ARR00-C. Understand how arrays work

CWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
CWE-123, Write-what-where Condition
CWE-125, Out-of-bounds Read
CWE-129, Unchecked array indexing

ARR01-C. Do not apply the sizeof operator to a pointer when taking the size of an arrayCWE-467, Use of sizeof() on a pointer type
ARR02-C. Explicitly specify array bounds, even if implicitly defined by an initializerCWE-665, Incorrect or incomplete initialization
CON06-C. Ensure that every mutex outlives the data it protects

CWE-667, Improper Locking

704, Incorrect Type Conversion or Cast
MSC41-CCWE-259, Use of Hard-Coded Password
MSC41-CCWE-798, Use of Hard-Coded Credentials
API00-CCWE-476
API07-CCWE-192
API07-CCWE-227
API07-CCWE-590
API07-CCWE-686
API07-CCWE-704
API07-CCWE-761
API07-CCWE-762
API07-CCWE-843
ARR01-CCWE-569
ARR01-CCWE-783
CON05-CCWE-557
CON05-CCWE-662
CON07-CCON07-C. Ensure that compound operations on shared variables are atomicCWE-366, Race condition within a thread
CON07-CCWE-413, Improper resource locking
CON07-CCWE-567, Unsynchronized access to shared data in a multithreaded context
CON07-CCWE-667, Improper locking
CON08-C. Do not assume that a group of calls to independently atomic methods is atomicCWE-362, Concurrent execution using shared resource with improper synchronization ("race condition")")
CON08-CCWE-366, Race condition within a thread
CON08-CCWE-662, Improper synchronization
DCL06-C. Use meaningful symbolic constants to represent literal valuesCWE-547, Use of hard-coded, security-relevant constants
DCL10-C. Maintain the contract between the writer and caller of variadic functionsCWE-628, Function call with incorrectly specified arguments
ENV01-C. Do not make assumptions about the size of an environment variableCWE-119, Improper Restriction of Operations within the Bounds of a Memory Buffer
ENV01-CCWE-123, Write-what-where Condition
ENV01-CCWE-125, Out-of-bounds ReadRead
ENV02-CENV02-C. Beware of multiple environment variables with the same effective nameCWE-462, Duplicate key in associative list (Alist)
ENV02-CCWE-807, Reliance on untrusted inputs in a security decision
ENV03-C. Sanitize the environment when invoking external programsCWE-78, Failure to sanitize data into an OS command (aka "OS command injection")
ENV03-CCWE-88, Argument injection or modification
ENV03-CCWE-426, Untrusted search path
ENV03-CCWE-471, Modification of Assumed-Immutable Data (MAID)
ENV03-CCWE-807, Reliance on intrusted inputs in a security decision
ERR00-C. Adopt and implement a consistent and comprehensive error-handling policyCWE-391, Unchecked error condition
ERR00-CCWE-544, Missing standardized error handling mechanism
ERR04-C. Choose an appropriate termination strategyCWE-705, Incorrect control flow scoping
ERR07-C. Prefer functions that support error checking over equivalent functions that don'tCWE-20, Improper Input Validation
ERR07-CCWE-79, Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
ERR07-CCWE-89, Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
ERR07-CCWE-91, XML Injection (aka Blind XPath Injection)
ERR07-CCWE-94, Improper Control of Generation of Code ('Code Injection')
ERR07-CCWE-114, Process Control
ERR07-CCWE-601, URL Redirection to Untrusted Site ('Open Redirect')
ERR07-CCWE-676, Use of potentially dangerous function
EXP02-C. Be aware of the short-circuit behavior of the logical AND and OR operatorsCWE-768, Incorrect short circuit evaluation
EXP05-C. Do not cast away a const qualificationCWE-704, Incorrect type conversion or cast
EXP08-C. Ensure pointer arithmetic is used correctlyCWE-468, Incorrect pointer scaling
EXP09-C. Use sizeof to determine the size of a type or variableCWE-805, Buffer access with incorrect length value
EXP12-C. Do not ignore values returned by functionsCWE-754, Improper check for unusual or exceptional conditionsfor unusual or exceptional conditions
EXP15-CEXP15-C. Do not place a semicolon on the same line as an if, for, or while statementCWE-480, Use of incorrect operator
EXP16-C. Do not compare function pointers to constant valuesCWE-480, Use of incorrect operator
EXP16-CCWE-482, Comparing instead of assigning
FIO01-C. Be careful using functions that use file names for identificationCWE-73, External control of file name or path
FIO01-CCWE-367, Time-of-check, time-of-use race condition
FIO01-CCWE-676, Use of potentially dangerous function
FIO02-C. Canonicalize path names originating from tainted sourcesCWE-22, Path traversal
FIO02-CCWE-23, Relative Path TraversalTraversal
FIO02-CCWE-28, Path Traversal: '..\filedir'
FIO02-CCWE-40, Path Traversal: '\\UNC\share\name\' (Windows UNC Share)
FIO02-CCWE-41, Failure to resolve path equivalence
FIO02-CCWE-59, Failure to resolve links before file access (aka "link following")
FIO02-CCWE-73, External control of file name or path
FIO05-C. Identify files using multiple file attributesCWE-37, Path issue—Slash absolute path
FIO05-CCWE-38, Path Issue—Backslash absolute path
FIO05-CCWE-39, Path Issue—Drive letter or Windows volume
FIO05-CCWE-62, UNIX hard link
FIO05-CCWE-64, Windows shortcut following (.LNK)
FIO05-CCWE-65, Windows hard link
FIO06-C. Create files with appropriate access permissionsCWE-276, Insecure default permissions
FIO06-CCWE-279, Insecure execution-assigned permissions
FIO06-CCWE-732, Incorrect permission assignment for critical resource
FIO15-C. Ensure that file operations are performed in a secure directoryCWE-379, Creation of temporary file in directory with insecure permissions
FIO15-CCWE-552, Files or directories accessible to external parties
FIO21-C. Do not create temporary files in shared directoriesCWE-379, Creation of temporary file in directory with insecure permissions
FIO22-C. Close files before spawning processesCWE-403, UNIX file descriptor leak
FIO22-CCWE-404, Improper resource shutdown or release
FIO22-CCWE-770, Allocation of resources without limits or throttling
FIO24-C. Do not open a file that is already openCWE-362, Concurrent Execution Using Shared Resource with Improper Synchronization ("Race Condition")
FIO24-CCWE-675, Duplicate Operations on Resource
FLP03-C. Detect and handle floating-point errors-CCWE-369, Divide by zero
FLP06-C. Convert integers to floating point for floating-point operationsCWE-681, Incorrect conversion between numeric types
FLP06-CCWE-682, Incorrect calculation
INT02-C. Understand integer conversion rulesCWE-192, Integer coercion error
INT02-CCWE-197, Numeric truncation error
INT05-C. Do not use input functions to convert character data if they cannot handle all possible inputsCWE-192, Integer coercion error
INT05-CCWE-197, Numeric truncation error
INT07-C. Use only explicitly signed or unsigned char type for numeric valuesCCWE-682, Incorrect calculation
INT10-C. Do not assume a positive remainder when using the % operatorCWE-682, Incorrect calculation
INT10-CCWE-129, Unchecked array indexing
INT13-C. Use bitwise operators only on unsigned operandsCWE-682, Incorrect calculation
INT15-C. Use intmax_t or uintmax_t for formatted IO on programmer-defined integer typesCWE-681, Incorrect conversion between numeric types
INT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that sizeINT18-CCWE-681, Incorrect conversion between numeric types
INT18-CCWE-190, Integer overflow (wrap or wraparound)
MEM00-C. Allocate and free memory in the same module, at the same level of abstractionCWE-415, Double free
MEM00-CCWE-416, Use after free
MEM01-C. Store a new value in pointers immediately after free()CWE-415, Double free
MEM01-CCWE-416, Use after free
MEM03-C. Clear sensitive information stored in reusable resourcesCWE-226, Sensitive information uncleared before release
MEM03-CCWE-244, Failure to clear heap memory before release ("heap inspection")
MEM04-C. Beware of zero-length allocationsCWE-687, Function call with incorrectly specified argument value
MEM06-C. Ensure that sensitive data is not written out to diskCWE-591, Sensitive data storage in improperly locked memory
MEM06-CCWE-528, Information leak through core dump files
MEM07-C. Ensure that the arguments to calloc(), when multiplied, do not wrapCWE-190, Integer overflow (wrap or wraparound)
MEM07-CCWE-128, Wrap-around error
MEM10-C. Define and use a pointer validation functionCWE-20, Improper Input Validation
MEM10-CCWE-79, Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'))
MEM10-CCWE-89, Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
MEM10-CCWE-91, XML Injection (aka Blind XPath Injection)
MEM10-CCWE-94, Improper Control of Generation of Code ('Code Injection')
MEM10-CCWE-114, Process Control
MEM10-CCWE-601, URL Redirection to Untrusted Site ('Open Redirect')
MEM11-C. Do not assume infinite heap spaceCWE-770, Allocation of resources without limits or throttling
MSC00-C. Compile cleanly at high warning levelsCWE-563, Unused variable
MSC00-CCWE-570, Expression is always false
MSC00-CCWE-571, Expression is always true
MSC06-C. Beware of compiler optimizationsCWE-14, Compiler removal of code to clear buffers
MSC07-C. Detect and remove dead codeCWE-561, Dead code
MSC09-C. Character encoding: Use subset of ASCII for safety-CCWE-116, Improper encoding or escaping of output
MSC10-C. Character encoding: UTF8-related issuesCWE-176, Failure to handle Unicode encoding
MSC10-CCWE-116, Improper encoding or escaping of output
MSC11-C. Incorporate diagnostic tests using assertionsCWE-190, Reachable assertion
MSC18-C. Be careful while handling sensitive data, such as passwords, in program codeCWE-259, Use of Hard-coded Password
MSC18-CCWE-261, Weak Cryptography for Passwords
MSC18-CCWE-311, Missing encryption of sensitive data
MSC18-CCWE-319, Cleartext Transmission of Sensitive Information
MSC18-CCWE-321, Use of Hard-coded Cryptographic KeyCryptographic Key
MSC18-CCWE-326, Inadequate encryption strength
MSC18-CCWE-798, Use of hard-coded credentials
MSC24-C. Do not use deprecated or obsolescent functionsCWE-20, Insufficient input validation
MSC24-CCWE-73, External control of file name or path
MSC24-CCWE-79, Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
MSC24-CCWE-89, Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
MSC24-CCWE-91, XML Injection (aka Blind XPath Injection)
MSC24-CCWE-94, Improper Control of Generation of Code ('Code Injection')
MSC24-CCWE-114, Process Control
MSC24-CCWE-120, Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')
MSC24-CCWE-192, Integer coercion error
MSC24-CCWE-197, Numeric truncation error
MSC24-CCWE-367, Time-of-check, time-of-use race conditioncondition
MSC24-CCWE-464, Addition of data structure sentinel
MSC24-CCWE-601, URL Redirection to Untrusted Site ('Open Redirect')
MSC24-CCWE-676, Use of potentially dangerous function
POS01-C. Check for the existence of links when dealing with filesCWE-59, Failure to resolve links before file access (aka "link following")
POS01-CCWE-362, Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
POS01-CCWE-367, Time-of-check, time-of-use (TOCTOU) race condition
POS02-C. Follow the principle of least privilegeCWE-250, Execution with unnecessary privileges
POS02-CCWE-272, Least privilege violation
PRE09-C. Do not replace secure functions with deprecated or obsolescent functionsCWE-684, Failure to provide specified functionality
SIG00-C. Mask signals handled by noninterruptible signal handlers-CCWE-662, Insufficient synchronization
STR02-C. Sanitize data passed to complex subsystemsCWE-88, Argument injection or modification
STR02-CCWE-78, Failure to sanitize data into an OS command (aka "OS command injection")
STR03-C. Do not inadvertently truncate a stringCWE-170, Improper null termination
STR03-CCWE-464, Addition of data structure sentinel
STR06-C. Do not assume that strtok() leaves the parse string unchangedCWE-464, Addition of data structure sentinel
WIN02-C. Restrict privileges when spawning child processesCWE-250, Execution with unnecessary privileges
WIN02-CCWE-272, Least privilege violation
WIN04-C. Consider encrypting function pointersCWE-311, Missing encryption of sensitive data
WIN04-CCWE-319, Cleartext Transmission of Sensitive Information