Skip to main content

IAR Embedded Workbench for Arm 9.70.x

SPC-uninit-arr-all

In this section:
Synopsis

Reads from local buffers are not preceded by writes.

Enabled by default

No

Severity/Certainty

High/Medium

highmedium.png
Full description

A value is read from an array, without being explicitly stored in that array first. This check determines whether at least one element of an array has been written before any element of the array is read. If the check triggers, it generally means that an uninitialized value is read. This might cause incorrect behavior or an application crash. This check is identical to MISRAC2004-1.2_a, MISRAC2012-Rule-9.1_b, CERT-EXP33-C_d.

Coding standards
CERT EXP33-C

Do not reference uninitialized memory

CWE 457

Use of Uninitialized Variable

MISRA C:2004 1.2

(Required) No reliance shall be placed on undefined or unspecified behavior.

MISRA C:2012 Rule-9.1

(Mandatory) The value of an object with automatic storage duration shall not be read before it has been set

Code examples

The following code example fails the check and will give a warning:

void example() {
  int a[20];
  int b = a[1];
}

The following code example passes the check and will not give a warning about this issue:

extern void f(int*);
void example() {
  int a[20];
  f(a);
  int b = a[1];
}