Unit Testing: Buffer overruns when using memchr/memset/memcpy/etc

This commit is contained in:
Daniel Marjamäki 2010-04-05 20:02:28 +02:00
parent 04b38e5428
commit 6327ed55a2
1 changed files with 38 additions and 0 deletions

View File

@ -130,6 +130,8 @@ private:
TEST_CASE(strncat1); TEST_CASE(strncat1);
TEST_CASE(strncat2); TEST_CASE(strncat2);
TEST_CASE(memfunc); // memchr/memset/memcpy
TEST_CASE(cin1); TEST_CASE(cin1);
TEST_CASE(varid1); TEST_CASE(varid1);
@ -1432,6 +1434,42 @@ private:
// memchr/memset/memcpy/etc
void memfunc()
{
check("void f()\n"
"{\n"
" char str[5];\n"
" memset(str, 0, 10);\n"
"}\n");
ASSERT_EQUALS("[test.cpp:4]: (error) Buffer access out-of-bounds\n", errout.str());
check("void f()\n"
"{\n"
" char a[5], b[50];\n"
" memcpy(a, b, 10);\n"
"}\n");
ASSERT_EQUALS("[test.cpp:4]: (error) Buffer access out-of-bounds\n", errout.str());
check("void f()\n"
"{\n"
" char a[5], b[50];\n"
" memmove(a, b, 10);\n"
"}\n");
ASSERT_EQUALS("[test.cpp:4]: (error) Buffer access out-of-bounds\n", errout.str());
// When this TODO assertion works, ticket #909 can probably be closed
check("void f()\n"
"{\n"
" char a[5], b[50];\n"
" memchr(a, b, 10);\n"
"}\n");
TODO_ASSERT_EQUALS("[test.cpp:4]: (error) Buffer access out-of-bounds\n", errout.str());
ASSERT_EQUALS("", errout.str());
}
void cin1() void cin1()
{ {
check("#include <iostream>\n" check("#include <iostream>\n"