V594. The pointer steps out of array's bounds.

The analyzer has detected a potential error of pointer handling. There is an expression in the program, on calculating which a pointer leaves array bounds. Here is a simple example to clarify this point:

int A[10];
fill(A, A + sizeof(A), 33);

We want all the array items to be assigned value 33. The error is this: the "A + sizeof(A)" pointer points far outside the array's bounds. As a result, we will change more memory cells than intended. A result of such an error is unpredictable.

This is the correct code:

int A[10];
fill(A, A + sizeof(A) / sizeof(A[0]), 33);

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

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

Bugs Found

Checked Projects
Collected Errors
13 290