V650. Type casting operation is utilized 2 times in succession. Next, the '+' operation is executed. Probably meant: (T1)((T2)a + b).


The analyzer has detected a potential error in an expression with address arithmetic. Addition/subtraction operations are performed over an expression which is a double type conversion. It may be a misprint: the programmer forgot to put the first type conversion and addition operation into brackets.

Consider an example of incorrect code:

ptr = (int *)(char *)p + offset_in_bytes;

The programmer was most likely expecting the 'p' variable to be cast to the 'char *' type, the shift in bytes added to it after that. Then the new pointer was expected to be cast to the 'int *' type.

But the missing parentheses turn this expression into a double type conversion and addition of the shift to the 'int'-pointer. The result will be different from the expected one. Such an error might well cause an array overrun.

This is the fixed code:

ptr = (int *)((char *)p + offset_in_bytes);

According to Common Weakness Enumeration, potential errors found by using this diagnostic are classified as CWE-468.

You can look at examples of errors detected by the V650 diagnostic.


Bugs Found

Checked Projects
334
Collected Errors
12 668