Skip to content

Commit 0cb895d

Browse files
Add test for #8616 (#8089)
Co-authored-by: chrchr-github <[email protected]>
1 parent f4f5100 commit 0cb895d

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

test/testbufferoverrun.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3752,6 +3752,26 @@ class TestBufferOverrun : public TestFixture {
37523752
" memset(&i[1], 0, 1000);\n"
37533753
"}");
37543754
TODO_ASSERT_EQUALS("[test.cpp:3:10]: (error) Buffer is accessed out of bounds: &i[1] [bufferAccessOutOfBounds]\n", "", errout_str());
3755+
3756+
check("struct S { int x; };\n" // #8616
3757+
"void f() {\n"
3758+
" S s;\n"
3759+
" memset(&s, 0, sizeof(s) * 2);\n"
3760+
"}\n");
3761+
ASSERT_EQUALS("[test.cpp:4:12]: (error) Buffer is accessed out of bounds: &s [bufferAccessOutOfBounds]\n", errout_str());
3762+
3763+
check("void f() {\n"
3764+
" char x;\n"
3765+
" memset(&x, 0, 16);\n"
3766+
"}\n"
3767+
"void g(char y) {\n"
3768+
" char x;\n"
3769+
" memcpy(&x, &y, 16);\n"
3770+
"}\n");
3771+
ASSERT_EQUALS("[test.cpp:3:12]: (error) Buffer is accessed out of bounds: &x [bufferAccessOutOfBounds]\n"
3772+
"[test.cpp:7:12]: (error) Buffer is accessed out of bounds: &x [bufferAccessOutOfBounds]\n"
3773+
"[test.cpp:7:16]: (error) Buffer is accessed out of bounds: &y [bufferAccessOutOfBounds]\n",
3774+
errout_str());
37553775
}
37563776

37573777
void valueflow_string() { // using ValueFlow string values in checking

0 commit comments

Comments
 (0)