Skip to main content

IAR Embedded Workbench for RH850 3.20.x

MISRAC++2023-6.8.3_c

In this section:
Synopsis

(Required) An assignment operator shall not assign the address of an object with automatic storage duration to an object with a greater lifetime

Enabled by default

Yes

Severity/Certainty

High/Medium

highmedium.png
Full description

Detected a stack address stored in a parameter of pointer or array type. This check is identical to MEM-stack-param, MISRAC++2008-7-5-2_c, MISRAC2004-17.6_d, MISRAC2012-Rule-1.3_s, MISRAC2012-Rule-18.6_d, CERT-DCL30-C_e.

Coding standards
CERT DCL30-C

Declare objects with appropriate storage durations

CWE 466

Return of Pointer Value Outside of Expected Range

MISRA C:2004 17.6

(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist.

MISRA C++ 2008 7-5-2

(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist.

Code examples

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

void example(int **ppx) {
  int x;
  ppx[0] = &x;  //local address
}

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

static int y = 0;
void example3(int **ppx){
  *ppx = &y;  //OK - static address
}