C and C++ Binaries


LANG.STRUCT.NTAD : Null Test After Dereference

Summary

A pointer is NULL-checked when it must already have been dereferenced.

Properties

Class Name Null Test After Dereference
Significance reliability
Mnemonic LANG.STRUCT.NTAD
Categories
CWE CWE:690 Unchecked Return Value to NULL Pointer Dereference
  CWE:696 Incorrect Behavior Order
CERT-C CERT-C:EXP34-C Do not dereference null pointers
Availability Available for C and C++.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="Null Test After Dereference"

Example

void f(char c);

char lang_struct_ntad(char *q){
    int a;
    a = q[3];
    f(a);
    if (q){   /* 'Null Test After Dereference' warning issued here */
              /* 'Redundant Condition' warning also issued
               * - q cannot be NULL at this point: if it was NULL then the program would
               *   have crashed when it was dereferenced above.
               */
        a = q[0];
    }
    return a;
}

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.