Skip to main content

IAR Embedded Workbench for RX 5.20

PTR-null-assign-fun-pos

In this section:
Synopsis

Possible NULL pointer dereferenced by a function.

Enabled by default

No

Severity/Certainty

High/Medium

highmedium.png
Full description

A pointer variable is assigned NULL, either directly or as the result of a function call that can return NULL. This pointer is then dereferenced, either directly, or by being passed to a function that might dereference it without checking its value. This will cause an application crash. This check is identical to CERT-EXP34-C_b.

Coding standards
CERT EXP34-C

Do not dereference null pointers

CWE 476

NULL Pointer Dereference

Code examples

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

#define NULL ((void*)  0)
void * malloc(unsigned long);

int * xmalloc(int size){
  int * res = malloc(sizeof(int)*size);
  if (res != NULL)
    return res;
  else 
    return NULL;
}

void zeroout(int *xp, int i)
{
  xp[i] = 0;
}

int foo() {
  int * x;
  int i;
  x = xmalloc(45);  
  // if (x)
  //  return -1;  
  for(i = 0; i < 45; i++)
    zeroout(x, i);

}

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

#define NULL ((void*)  0)
void * malloc(unsigned long);

int * xmalloc(int size){
  int * res = malloc(sizeof(int)*size);
  if (res != NULL)
    return res;
  else 
    return NULL;
}

void zeroout(int *xp, int i)
{
  xp[i] = 0;
}

int foo() {
  int * x;
  int i;
  x = xmalloc(45);  
  if (x == NULL)
    return -1;
  else {
    for(i = 0; i < 45; i++)
      zeroout(x, i);
  }
}