Versions Compared

Key

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

Variable - length arrays (VLA) are essentially the same as traditional C arrays , except that they are declared with a size that is not a constant integer expression and can be declared only at block scope or function prototype scope and no linkage. A variable-A variable length array can be declared

...

where the integer expression size and the declaration of vla are both evaluated at runtime. If the size argument supplied to a variable-a variable length array is not a positive integer value, the behavior is undefined. (See undefined behavior 69behavior 75 in Annex J of C99C11 [ISO/IEC 9899:2011].) In addition, if the magnitude of the argument is excessive, the program may behave in an unexpected way. An attacker may be able to leverage this behavior to overwrite critical program data [Griffiths 2006]. The programmer must ensure that size arguments to variable - length arrays, especially those derived from untrusted data, are in a valid range.

...

In this noncompliant code example, a variable-a variable length array of size size is declared. The size is declared as size_t in compliance with recommendation INT01-C. Use rsize_t or size_t for all integer values representing the size of an object.

...

Newer versions of GCC have incorporated variable length arrays , but do not yet claim full C99 conformance. Therefore, variable length arrays should only be used on GCC with great care.

...

Coverity Prevent

can

Can find the instances where data is read/write from a negative array index.

Tool

Version

Checker

Description

Section
Include Page
Coverity_V
Coverity_V
section

REVERSE_NEGATIVE NEGATIVE_RETURNS

Section

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

Related Guidelines

ISO/IEC TR 17961 (Draft) Tainted, potentially mutilated, or out-of-domain integer values are used in a restricted sink [taintsink]

ISO/IEC TR 24772 "XYX Boundary Beginning Violation" and "XYZ Unchecked Array Indexing"

...