tweaked the error message somewhat for id arrayIndexThenCheck
This commit is contained in:
parent
ac6d67dc4d
commit
0186fc0650
|
@ -2209,5 +2209,9 @@ void CheckBufferOverrun::arrayIndexThenCheck()
|
||||||
|
|
||||||
void CheckBufferOverrun::arrayIndexThenCheckError(const Token *tok, const std::string &indexName)
|
void CheckBufferOverrun::arrayIndexThenCheckError(const Token *tok, const std::string &indexName)
|
||||||
{
|
{
|
||||||
reportError(tok, Severity::style, "arrayIndexThenCheck", "array index " + indexName + " is used before bounds check");
|
reportError(tok, Severity::style, "arrayIndexThenCheck",
|
||||||
|
"Array index " + indexName + " is used before limits check\n"
|
||||||
|
"Defensive programming: The variable " + indexName + " is used as array index and then there is a check that it is within limits. This can "
|
||||||
|
"mean that the array might be accessed out-of-bounds. Reorder conditions such as '(a[i] && i < 10)' to '(i < 10 && a[i])'. That way the "
|
||||||
|
"array will not be accessed when the index is out of limits.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -3026,13 +3026,13 @@ private:
|
||||||
" if (s[i] == 'x' && i < y) {\n"
|
" if (s[i] == 'x' && i < y) {\n"
|
||||||
" }"
|
" }"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:2]: (style) array index i is used before bounds check\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:2]: (style) Array index i is used before limits check\n", errout.str());
|
||||||
|
|
||||||
check("void f(const char s[]) {\n"
|
check("void f(const char s[]) {\n"
|
||||||
" for (i = 0; s[i] == 'x' && i < y; ++i) {\n"
|
" for (i = 0; s[i] == 'x' && i < y; ++i) {\n"
|
||||||
" }"
|
" }"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:2]: (style) array index i is used before bounds check\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:2]: (style) Array index i is used before limits check\n", errout.str());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue