CWE VIEW: Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)
CWE entries in this view (graph) are fully or partially eliminated by following the SEI CERT C++ Coding Standard, as published in 2016. This view is no longer being actively maintained, since it statically represents the coding rules as they were in 2016.
The following graph shows the tree-like relationships between
weaknesses that exist at different levels of abstraction. At the highest level, categories
and pillars exist to group weaknesses. Categories (which are not technically weaknesses) are
special CWE entries used to group weaknesses that share a common characteristic. Pillars are
weaknesses that are described in the most abstract fashion. Below these top-level entries
are weaknesses are varying levels of abstraction. Classes are still very abstract, typically
independent of any specific language or technology. Base level weaknesses are used to
present a more specific type of weakness. A variant is a weakness that is described at a
very low level of detail, typically limited to a specific language or technology. A chain is
a set of weaknesses that must be reachable consecutively in order to produce an exploitable
vulnerability. While a composite is a set of weaknesses that must all be present
simultaneously in order to produce an exploitable vulnerability.
Show Details:
868 - Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
869
(CERT C++ Secure Coding Section 01 - Preprocessor (PRE))
Weaknesses in this category are related to rules in the Preprocessor (PRE) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
870
(CERT C++ Secure Coding Section 02 - Declarations and Initialization (DCL))
Weaknesses in this category are related to rules in the Declarations and Initialization (DCL) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
871
(CERT C++ Secure Coding Section 03 - Expressions (EXP))
Weaknesses in this category are related to rules in the Expressions (EXP) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
871
(CERT C++ Secure Coding Section 03 - Expressions (EXP)) >
476
(NULL Pointer Dereference)
The product dereferences a pointer that it expects to be valid but is NULL.
NPD
null deref
NPE
nil pointer dereference
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
871
(CERT C++ Secure Coding Section 03 - Expressions (EXP)) >
480
(Use of Incorrect Operator)
The product accidentally uses the wrong operator, which changes the logic in security-relevant ways.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
871
(CERT C++ Secure Coding Section 03 - Expressions (EXP)) >
768
(Incorrect Short Circuit Evaluation)
The product contains a conditional statement with multiple logical expressions in which one of the non-leading expressions may produce side effects. This may lead to an unexpected state in the program after the execution of the conditional, because short-circuiting logic may prevent the side effects from occurring.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT))
Weaknesses in this category are related to rules in the Integers (INT) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
129
(Improper Validation of Array Index)
The product uses untrusted input when calculating or using an array index, but the product does not validate or incorrectly validates the index to ensure the index references a valid position within the array.
out-of-bounds array index
index-out-of-range
array index underflow
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
190
(Integer Overflow or Wraparound)
The product performs a calculation that can
produce an integer overflow or wraparound when the logic
assumes that the resulting value will always be larger than
the original value. This occurs when an integer value is
incremented to a value that is too large to store in the
associated representation. When this occurs, the value may
become a very small or negative number.
Overflow
Wraparound
wrap, wrap-around, wrap around
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
192
(Integer Coercion Error)
Integer coercion refers to a set of flaws pertaining to the type casting, extension, or truncation of primitive data types.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
197
(Numeric Truncation Error)
Truncation errors occur when a primitive is cast to a primitive of a smaller size and data is lost in the conversion.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
20
(Improper Input Validation)
The product receives input or data, but it does
not validate or incorrectly validates that the input has the
properties that are required to process the data safely and
correctly.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
369
(Divide By Zero)
The product divides a value by zero.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
466
(Return of Pointer Value Outside of Expected Range)
A function can return a pointer to memory that is outside of the buffer that the pointer is expected to reference.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
587
(Assignment of a Fixed Address to a Pointer)
The product sets a pointer to a specific address other than NULL or 0.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
606
(Unchecked Input for Loop Condition)
The product does not properly check inputs that are used for loop conditions, potentially leading to a denial of service or other consequences because of excessive looping.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
676
(Use of Potentially Dangerous Function)
The product invokes a potentially dangerous function that could introduce a vulnerability if it is used incorrectly, but the function can also be used safely.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
681
(Incorrect Conversion between Numeric Types)
When converting from one data type to another, such as long to integer, data can be omitted or translated in a way that produces unexpected values. If the resulting values are used in a sensitive context, then dangerous behaviors may occur.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
872
(CERT C++ Secure Coding Section 04 - Integers (INT)) >
682
(Incorrect Calculation)
The product performs a calculation that generates incorrect or unintended results that are later used in security-critical decisions or resource management.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
873
(CERT C++ Secure Coding Section 05 - Floating Point Arithmetic (FLP))
Weaknesses in this category are related to rules in the Floating Point Arithmetic (FLP) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
873
(CERT C++ Secure Coding Section 05 - Floating Point Arithmetic (FLP)) >
369
(Divide By Zero)
The product divides a value by zero.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
873
(CERT C++ Secure Coding Section 05 - Floating Point Arithmetic (FLP)) >
681
(Incorrect Conversion between Numeric Types)
When converting from one data type to another, such as long to integer, data can be omitted or translated in a way that produces unexpected values. If the resulting values are used in a sensitive context, then dangerous behaviors may occur.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
873
(CERT C++ Secure Coding Section 05 - Floating Point Arithmetic (FLP)) >
682
(Incorrect Calculation)
The product performs a calculation that generates incorrect or unintended results that are later used in security-critical decisions or resource management.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
873
(CERT C++ Secure Coding Section 05 - Floating Point Arithmetic (FLP)) >
686
(Function Call With Incorrect Argument Type)
The product calls a function, procedure, or routine, but the caller specifies an argument that is the wrong data type, which may lead to resultant weaknesses.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
874
(CERT C++ Secure Coding Section 06 - Arrays and the STL (ARR))
Weaknesses in this category are related to rules in the Arrays and the STL (ARR) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
874
(CERT C++ Secure Coding Section 06 - Arrays and the STL (ARR)) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer)
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Buffer Overflow
buffer overrun
memory safety
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
874
(CERT C++ Secure Coding Section 06 - Arrays and the STL (ARR)) >
129
(Improper Validation of Array Index)
The product uses untrusted input when calculating or using an array index, but the product does not validate or incorrectly validates the index to ensure the index references a valid position within the array.
out-of-bounds array index
index-out-of-range
array index underflow
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
874
(CERT C++ Secure Coding Section 06 - Arrays and the STL (ARR)) >
467
(Use of sizeof() on a Pointer Type)
The code calls sizeof() on a pointer type, which can be an incorrect calculation if the programmer intended to determine the size of the data that is being pointed to.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
874
(CERT C++ Secure Coding Section 06 - Arrays and the STL (ARR)) >
469
(Use of Pointer Subtraction to Determine Size)
The product subtracts one pointer from another in order to determine size, but this calculation can be incorrect if the pointers do not exist in the same memory chunk.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
874
(CERT C++ Secure Coding Section 06 - Arrays and the STL (ARR)) >
665
(Improper Initialization)
The product does not initialize or incorrectly initializes a resource, which might leave the resource in an unexpected state when it is accessed or used.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
874
(CERT C++ Secure Coding Section 06 - Arrays and the STL (ARR)) >
805
(Buffer Access with Incorrect Length Value)
The product uses a sequential operation to read or write a buffer, but it uses an incorrect length value that causes it to access memory that is outside of the bounds of the buffer.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR))
Weaknesses in this category are related to rules in the Characters and Strings (STR) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer)
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Buffer Overflow
buffer overrun
memory safety
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
120
(Buffer Copy without Checking Size of Input ('Classic Buffer Overflow'))
The product copies an input buffer to an output buffer without verifying that the size of the input buffer is less than the size of the output buffer, leading to a buffer overflow.
Classic Buffer Overflow
Unbounded Transfer
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
170
(Improper Null Termination)
The product does not terminate or incorrectly terminates a string or array with a null character or equivalent terminator.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
193
(Off-by-one Error)
A product calculates or uses an incorrect maximum or minimum value that is 1 more, or 1 less, than the correct value.
off-by-five
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
464
(Addition of Data Structure Sentinel)
The accidental addition of a data-structure sentinel can cause serious programming logic problems.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
686
(Function Call With Incorrect Argument Type)
The product calls a function, procedure, or routine, but the caller specifies an argument that is the wrong data type, which may lead to resultant weaknesses.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
704
(Incorrect Type Conversion or Cast)
The product does not correctly convert an object, resource, or structure from one type to a different type.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
78
(Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection'))
The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.
Shell injection
Shell metacharacters
OS Command Injection
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
875
(CERT C++ Secure Coding Section 07 - Characters and Strings (STR)) >
88
(Improper Neutralization of Argument Delimiters in a Command ('Argument Injection'))
The product constructs a string for a command to be executed by a separate component
in another control sphere, but it does not properly delimit the
intended arguments, options, or switches within that command string.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM))
Weaknesses in this category are related to rules in the Memory Management (MEM) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer)
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Buffer Overflow
buffer overrun
memory safety
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
128
(Wrap-around Error)
Wrap around errors occur whenever a value is incremented past the maximum value for its type and therefore "wraps around" to a very small, negative, or undefined value.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
131
(Incorrect Calculation of Buffer Size)
The product does not correctly calculate the size to be used when allocating a buffer, which could lead to a buffer overflow.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
190
(Integer Overflow or Wraparound)
The product performs a calculation that can
produce an integer overflow or wraparound when the logic
assumes that the resulting value will always be larger than
the original value. This occurs when an integer value is
incremented to a value that is too large to store in the
associated representation. When this occurs, the value may
become a very small or negative number.
Overflow
Wraparound
wrap, wrap-around, wrap around
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
20
(Improper Input Validation)
The product receives input or data, but it does
not validate or incorrectly validates that the input has the
properties that are required to process the data safely and
correctly.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
226
(Sensitive Information in Resource Not Removed Before Reuse)
The product releases a resource such as memory or a file so that it can be made available for reuse, but it does not clear or "zeroize" the information contained in the resource before the product performs a critical state transition or makes the resource available for reuse by other entities.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
244
(Improper Clearing of Heap Memory Before Release ('Heap Inspection'))
Using realloc() to resize buffers that store sensitive information can leave the sensitive information exposed to attack, because it is not removed from memory.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
252
(Unchecked Return Value)
The product does not check the return value from a method or function, which can prevent it from detecting unexpected states and conditions.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
391
(Unchecked Error Condition)
[PLANNED FOR DEPRECATION. SEE MAINTENANCE NOTES AND CONSIDER CWE-252, CWE-248, OR CWE-1069.] Ignoring exceptions and other error conditions may allow an attacker to induce unexpected behavior unnoticed.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
404
(Improper Resource Shutdown or Release)
The product does not release or incorrectly releases a resource before it is made available for re-use.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
415
(Double Free)
The product calls free() twice on the same memory address, potentially leading to modification of unexpected memory locations.
Double-free
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
416
(Use After Free)
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.
Dangling pointer
UAF
Use-After-Free
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
476
(NULL Pointer Dereference)
The product dereferences a pointer that it expects to be valid but is NULL.
NPD
null deref
NPE
nil pointer dereference
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
528
(Exposure of Core Dump File to an Unauthorized Control Sphere)
The product generates a core dump file in a directory, archive, or other resource that is stored, transferred, or otherwise made accessible to unauthorized actors.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
590
(Free of Memory not on the Heap)
The product calls free() on a pointer to memory that was not allocated using associated heap allocation functions such as malloc(), calloc(), or realloc().
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
591
(Sensitive Data Storage in Improperly Locked Memory)
The product stores sensitive data in memory that is not locked, or that has been incorrectly locked, which might cause the memory to be written to swap files on disk by the virtual memory manager. This can make the data more accessible to external actors.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
665
(Improper Initialization)
The product does not initialize or incorrectly initializes a resource, which might leave the resource in an unexpected state when it is accessed or used.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
687
(Function Call With Incorrectly Specified Argument Value)
The product calls a function, procedure, or routine, but the caller specifies an argument that contains the wrong value, which may lead to resultant weaknesses.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
690
(Unchecked Return Value to NULL Pointer Dereference)
The product does not check for an error after calling a function that can return with a NULL pointer if the function fails, which leads to a resultant NULL pointer dereference.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
703
(Improper Check or Handling of Exceptional Conditions)
The product does not properly anticipate or handle exceptional conditions that rarely occur during normal operation of the product.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
754
(Improper Check for Unusual or Exceptional Conditions)
The product does not check or incorrectly checks for unusual or exceptional conditions that are not expected to occur frequently during day to day operation of the product.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
762
(Mismatched Memory Management Routines)
The product attempts to return a memory resource to the system, but it calls a release function that is not compatible with the function that was originally used to allocate that resource.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
770
(Allocation of Resources Without Limits or Throttling)
The product allocates a reusable resource or group of resources on behalf of an actor without imposing any restrictions on the size or number of resources that can be allocated, in violation of the intended security policy for that actor.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
876
(CERT C++ Secure Coding Section 08 - Memory Management (MEM)) >
822
(Untrusted Pointer Dereference)
The product obtains a value from an untrusted source, converts this value to a pointer, and dereferences the resulting pointer.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO))
Weaknesses in this category are related to rules in the Input Output (FIO) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer)
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Buffer Overflow
buffer overrun
memory safety
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
134
(Use of Externally-Controlled Format String)
The product uses a function that accepts a format string as an argument, but the format string originates from an external source.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
22
(Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'))
The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
Directory traversal
Path traversal
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
241
(Improper Handling of Unexpected Data Type)
The product does not handle or incorrectly handles when a particular element is not the expected type, e.g. it expects a digit (0-9) but is provided with a letter (A-Z).
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
276
(Incorrect Default Permissions)
During installation, installed file permissions are set to allow anyone to modify those files.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
279
(Incorrect Execution-Assigned Permissions)
While it is executing, the product sets the permissions of an object in a way that violates the intended permissions that have been specified by the user.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
362
(Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition'))
The product contains a concurrent code sequence that requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence operating concurrently.
Race Condition
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
367
(Time-of-check Time-of-use (TOCTOU) Race Condition)
The product checks the state of a resource before using that resource, but the resource's state can change between the check and the use in a way that invalidates the results of the check. This can cause the product to perform invalid actions when the resource is in an unexpected state.
TOCTTOU
TOCCTOU
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
37
(Path Traversal: '/absolute/pathname/here')
The product accepts input in the form of a slash absolute path ('/absolute/pathname/here') without appropriate validation, which can allow an attacker to traverse the file system to unintended locations or access arbitrary files.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
379
(Creation of Temporary File in Directory with Insecure Permissions)
The product creates a temporary file in a directory whose permissions allow unintended actors to determine the file's existence or otherwise access that file.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
38
(Path Traversal: '\absolute\pathname\here')
The product accepts input in the form of a backslash absolute path ('\absolute\pathname\here') without appropriate validation, which can allow an attacker to traverse the file system to unintended locations or access arbitrary files.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
39
(Path Traversal: 'C:dirname')
The product accepts input that contains a drive letter or Windows volume letter ('C:dirname') that potentially redirects access to an unintended location or arbitrary file.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
391
(Unchecked Error Condition)
[PLANNED FOR DEPRECATION. SEE MAINTENANCE NOTES AND CONSIDER CWE-252, CWE-248, OR CWE-1069.] Ignoring exceptions and other error conditions may allow an attacker to induce unexpected behavior unnoticed.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
403
(Exposure of File Descriptor to Unintended Control Sphere ('File Descriptor Leak'))
A process does not close sensitive file descriptors before invoking a child process, which allows the child to perform unauthorized I/O operations using those descriptors.
File descriptor leak
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
404
(Improper Resource Shutdown or Release)
The product does not release or incorrectly releases a resource before it is made available for re-use.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
41
(Improper Resolution of Path Equivalence)
The product is vulnerable to file system contents disclosure through path equivalence. Path equivalence involves the use of special characters in file and directory names. The associated manipulations are intended to generate multiple names for the same object.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
552
(Files or Directories Accessible to External Parties)
The product makes files or directories accessible to unauthorized actors, even though they should not be.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
59
(Improper Link Resolution Before File Access ('Link Following'))
The product attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource.
insecure temporary file
Zip Slip
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
62
(UNIX Hard Link)
The product, when opening a file or directory, does not sufficiently account for when the name is associated with a hard link to a target that is outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
64
(Windows Shortcut Following (.LNK))
The product, when opening a file or directory, does not sufficiently handle when the file is a Windows shortcut (.LNK) whose target is outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files.
Windows symbolic link following
symlink
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
65
(Windows Hard Link)
The product, when opening a file or directory, does not sufficiently handle when the name is associated with a hard link to a target that is outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
67
(Improper Handling of Windows Device Names)
The product constructs pathnames from user input, but it does not handle or incorrectly handles a pathname containing a Windows device name such as AUX or CON. This typically leads to denial of service or an information exposure when the application attempts to process the pathname as a regular file.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
675
(Multiple Operations on Resource in Single-Operation Context)
The product performs the same operation on a resource two or more times, when the operation should only be applied once.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
676
(Use of Potentially Dangerous Function)
The product invokes a potentially dangerous function that could introduce a vulnerability if it is used incorrectly, but the function can also be used safely.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
73
(External Control of File Name or Path)
The product allows user input to control or influence paths or file names that are used in filesystem operations.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
732
(Incorrect Permission Assignment for Critical Resource)
The product specifies permissions for a security-critical resource in a way that allows that resource to be read or modified by unintended actors.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
877
(CERT C++ Secure Coding Section 09 - Input Output (FIO)) >
770
(Allocation of Resources Without Limits or Throttling)
The product allocates a reusable resource or group of resources on behalf of an actor without imposing any restrictions on the size or number of resources that can be allocated, in violation of the intended security policy for that actor.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
878
(CERT C++ Secure Coding Section 10 - Environment (ENV))
Weaknesses in this category are related to rules in the Environment (ENV) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
878
(CERT C++ Secure Coding Section 10 - Environment (ENV)) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer)
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Buffer Overflow
buffer overrun
memory safety
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
878
(CERT C++ Secure Coding Section 10 - Environment (ENV)) >
426
(Untrusted Search Path)
The product searches for critical resources using an externally-supplied search path that can point to resources that are not under the product's direct control.
Untrusted Path
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
878
(CERT C++ Secure Coding Section 10 - Environment (ENV)) >
462
(Duplicate Key in Associative List (Alist))
Duplicate keys in associative lists can lead to non-unique keys being mistaken for an error.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
878
(CERT C++ Secure Coding Section 10 - Environment (ENV)) >
705
(Incorrect Control Flow Scoping)
The product does not properly return control flow to the proper location after it has completed a task or detected an unusual condition.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
878
(CERT C++ Secure Coding Section 10 - Environment (ENV)) >
78
(Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection'))
The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.
Shell injection
Shell metacharacters
OS Command Injection
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
878
(CERT C++ Secure Coding Section 10 - Environment (ENV)) >
807
(Reliance on Untrusted Inputs in a Security Decision)
The product uses a protection mechanism that relies on the existence or values of an input, but the input can be modified by an untrusted actor in a way that bypasses the protection mechanism.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
878
(CERT C++ Secure Coding Section 10 - Environment (ENV)) >
88
(Improper Neutralization of Argument Delimiters in a Command ('Argument Injection'))
The product constructs a string for a command to be executed by a separate component
in another control sphere, but it does not properly delimit the
intended arguments, options, or switches within that command string.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
879
(CERT C++ Secure Coding Section 11 - Signals (SIG))
Weaknesses in this category are related to rules in the Signals (SIG) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
879
(CERT C++ Secure Coding Section 11 - Signals (SIG)) >
479
(Signal Handler Use of a Non-reentrant Function)
The product defines a signal handler that calls a non-reentrant function.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
879
(CERT C++ Secure Coding Section 11 - Signals (SIG)) >
662
(Improper Synchronization)
The product utilizes multiple threads or processes to allow temporary access to a shared resource that can only be exclusive to one process at a time, but it does not properly synchronize these actions, which might cause simultaneous accesses of this resource by multiple threads or processes.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR))
Weaknesses in this category are related to rules in the Exceptions and Error Handling (ERR) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
209
(Generation of Error Message Containing Sensitive Information)
The product generates an error message that includes sensitive information about its environment, users, or associated data.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
390
(Detection of Error Condition Without Action)
The product detects a specific error, but takes no actions to handle the error.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
391
(Unchecked Error Condition)
[PLANNED FOR DEPRECATION. SEE MAINTENANCE NOTES AND CONSIDER CWE-252, CWE-248, OR CWE-1069.] Ignoring exceptions and other error conditions may allow an attacker to induce unexpected behavior unnoticed.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
460
(Improper Cleanup on Thrown Exception)
The product does not clean up its state or incorrectly cleans up its state when an exception is thrown, leading to unexpected state or control flow.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
497
(Exposure of Sensitive System Information to an Unauthorized Control Sphere)
The product does not properly prevent sensitive system-level information from being accessed by unauthorized actors who do not have the same level of access to the underlying system as the product does.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
544
(Missing Standardized Error Handling Mechanism)
The product does not use a standardized method for handling errors throughout the code, which might introduce inconsistent error handling and resultant weaknesses.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
703
(Improper Check or Handling of Exceptional Conditions)
The product does not properly anticipate or handle exceptional conditions that rarely occur during normal operation of the product.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
705
(Incorrect Control Flow Scoping)
The product does not properly return control flow to the proper location after it has completed a task or detected an unusual condition.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
754
(Improper Check for Unusual or Exceptional Conditions)
The product does not check or incorrectly checks for unusual or exceptional conditions that are not expected to occur frequently during day to day operation of the product.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
880
(CERT C++ Secure Coding Section 12 - Exceptions and Error Handling (ERR)) >
755
(Improper Handling of Exceptional Conditions)
The product does not handle or incorrectly handles an exceptional condition.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
881
(CERT C++ Secure Coding Section 13 - Object Oriented Programming (OOP))
Weaknesses in this category are related to rules in the Object Oriented Programming (OOP) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
882
(CERT C++ Secure Coding Section 14 - Concurrency (CON))
Weaknesses in this category are related to rules in the Concurrency (CON) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
882
(CERT C++ Secure Coding Section 14 - Concurrency (CON)) >
362
(Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition'))
The product contains a concurrent code sequence that requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence operating concurrently.
Race Condition
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
882
(CERT C++ Secure Coding Section 14 - Concurrency (CON)) >
366
(Race Condition within a Thread)
If two threads of execution use a resource simultaneously, there exists the possibility that resources may be used while invalid, in turn making the state of execution undefined.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
882
(CERT C++ Secure Coding Section 14 - Concurrency (CON)) >
404
(Improper Resource Shutdown or Release)
The product does not release or incorrectly releases a resource before it is made available for re-use.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
882
(CERT C++ Secure Coding Section 14 - Concurrency (CON)) >
488
(Exposure of Data Element to Wrong Session)
The product does not sufficiently enforce boundaries between the states of different sessions, causing data to be provided to, or used by, the wrong session.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
882
(CERT C++ Secure Coding Section 14 - Concurrency (CON)) >
772
(Missing Release of Resource after Effective Lifetime)
The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC))
Weaknesses in this category are related to rules in the Miscellaneous (MSC) section of the CERT C++ Secure Coding Standard. Since not all rules map to specific weaknesses, this category may be incomplete.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
116
(Improper Encoding or Escaping of Output)
The product prepares a structured message for communication with another component, but encoding or escaping of the data is either missing or done incorrectly. As a result, the intended structure of the message is not preserved.
Output Sanitization
Output Validation
Output Encoding
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
14
(Compiler Removal of Code to Clear Buffers)
Sensitive memory is cleared according to the source code, but compiler optimizations leave the memory untouched when it is not read from again, aka "dead store removal."
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
176
(Improper Handling of Unicode Encoding)
The product does not properly handle when an input contains Unicode encoding.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
20
(Improper Input Validation)
The product receives input or data, but it does
not validate or incorrectly validates that the input has the
properties that are required to process the data safely and
correctly.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
327
(Use of a Broken or Risky Cryptographic Algorithm)
The product uses a broken or risky cryptographic algorithm or protocol.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
330
(Use of Insufficiently Random Values)
The product uses insufficiently random numbers or values in a security context that depends on unpredictable numbers.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
480
(Use of Incorrect Operator)
The product accidentally uses the wrong operator, which changes the logic in security-relevant ways.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
482
(Comparing instead of Assigning)
The code uses an operator for comparison when the intention was to perform an assignment.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
561
(Dead Code)
The product contains dead code, which can never be executed.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
563
(Assignment to Variable without Use)
The variable's value is assigned but never used, making it a dead store.
Unused Variable
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
570
(Expression is Always False)
The product contains an expression that will always evaluate to false.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
571
(Expression is Always True)
The product contains an expression that will always evaluate to true.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
697
(Incorrect Comparison)
The product compares two entities in a security-relevant context, but the comparison is incorrect, which may lead to resultant weaknesses.
![]() ![]()
868
(Weaknesses Addressed by the SEI CERT C++ Coding Standard (2016 Version)) >
883
(CERT C++ Secure Coding Section 49 - Miscellaneous (MSC)) >
704
(Incorrect Type Conversion or Cast)
The product does not correctly convert an object, resource, or structure from one type to a different type.
Relationship
The relationships in this view were determined based on specific statements within the rules from the standard. Not all rules have direct relationships to individual weaknesses, although they likely have chaining relationships in specific circumstances.
More information is available — Please edit the custom filter or select a different filter. |
Use of the Common Weakness Enumeration (CWE™) and the associated references from this website are subject to the Terms of Use. CWE is sponsored by the U.S. Department of Homeland Security (DHS) Cybersecurity and Infrastructure Security Agency (CISA) and managed by the Homeland Security Systems Engineering and Development Institute (HSSEDI) which is operated by The MITRE Corporation (MITRE). Copyright © 2006–2025, The MITRE Corporation. CWE, CWSS, CWRAF, and the CWE logo are trademarks of The MITRE Corporation. |