PTR-null-assign-fun-pos
In this section:
Synopsis
Possible NULL pointer dereferenced by a function.
Enabled by default
No
Severity/Certainty
High/Medium

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);
}
}