C and C++


LANG.STRUCT.TMD : Too Many Dereferences

Summary

An item is dereferenced by more levels than allowed by the MAX_PERMITTED_DEREFS configuration parameter (factory setting is MAX_PERMITTED_DEREFS=1).

Properties

Class Name Too Many Dereferences
Significance style
Mnemonic LANG.STRUCT.TMD
Categories
CWE CWE:710 Improper Adherence to Coding Standards
POW10 POW10:9 Limit the use of pointers. Use no more than two levels of dereferencing per expression.
JPL JPL:27 Use no more than two levels of dereferencing per object reference.
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Too Many Dereferences"

Example

int lang_struct_tmd(int *x, int *y, int **z){
    int a;
    int *p;

    a = x[y[1]];       /* 'Too Many Dereferences' warning issued here */
    *(x + *y) = 2;     /* 'Too Many Dereferences' warning issued here */
    if (a){
      a = **z;         /* 'Too Many Dereferences' warning issued here */
    }

    p = *z + a;                          /* ok */
    if (p){
        *x = *y;                         /* ok */
    }
    return  *x - *y;                     /* ok */
}

Relevant Configuration File Parameters

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