Fixed #4968 (False positive: Structure with 'read' member is confused with read() function.)
This commit is contained in:
parent
564d36698b
commit
946722faf0
|
@ -577,15 +577,20 @@ void CheckBufferOverrun::checkFunctionParameter(const Token &tok, unsigned int p
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (par == 2) {
|
else if (par == 2) {
|
||||||
total_size["read"] = 3;
|
if (_settings->standards.posix) {
|
||||||
total_size["pread"] = 3;
|
total_size["read"] = 3;
|
||||||
total_size["write"] = 3;
|
total_size["pread"] = 3;
|
||||||
total_size["recv"] = 3;
|
total_size["write"] = 3;
|
||||||
total_size["recvfrom"] = 3;
|
total_size["recv"] = 3;
|
||||||
total_size["send"] = 3;
|
total_size["recvfrom"] = 3;
|
||||||
total_size["sendto"] = 3;
|
total_size["send"] = 3;
|
||||||
|
total_size["sendto"] = 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Token::Match(tok.previous(), ".") || Token::Match(tok.tokAt(-2), "!!std ::"))
|
||||||
|
total_size.clear();
|
||||||
|
|
||||||
std::map<std::string, unsigned int>::const_iterator it = total_size.find(tok.str());
|
std::map<std::string, unsigned int>::const_iterator it = total_size.find(tok.str());
|
||||||
if (it != total_size.end()) {
|
if (it != total_size.end()) {
|
||||||
if (arrayInfo.element_size() == 0)
|
if (arrayInfo.element_size() == 0)
|
||||||
|
|
|
@ -2162,6 +2162,15 @@ private:
|
||||||
"sendto(s, str, 4, 0, 0x0, 0x0);\n"
|
"sendto(s, str, 4, 0, 0x0, 0x0);\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (error) Buffer is accessed out of bounds: str\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (error) Buffer is accessed out of bounds: str\n", errout.str());
|
||||||
|
|
||||||
|
// #4968 - not standard function
|
||||||
|
check("void f() {\n"
|
||||||
|
" char str[3];\n"
|
||||||
|
" foo.memset(str, 0, 100);\n"
|
||||||
|
" foo::memset(str, 0, 100);\n"
|
||||||
|
" std::memset(str, 0, 100);\n"
|
||||||
|
"}");
|
||||||
|
ASSERT_EQUALS("[test.cpp:5]: (error) Buffer is accessed out of bounds: str\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue