From 79223b71d5436ebc814f2c8ce2e158cb0ded65a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 3 Jan 2010 15:49:17 +0100 Subject: [PATCH] added test case for #1193 (false negative: array out of bounds in loop when there is calculation) --- test/testbufferoverrun.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 4726584c2..5b88c9961 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -95,6 +95,7 @@ private: TEST_CASE(array_index_23); TEST_CASE(array_index_multidim); TEST_CASE(array_index_switch_in_for); + TEST_CASE(array_index_calculation); TEST_CASE(buffer_overrun_1); TEST_CASE(buffer_overrun_2); @@ -819,9 +820,25 @@ private: " };\n" " }\n" "}\n"); + ASSERT_EQUALS("", errout.str()); TODO_ASSERT_EQUALS("[test.cpp:12]: (error) Array index out of bounds\n", errout.str()); } + void array_index_calculation() + { + // #1193 - false negative: array out of bounds in loop when there is calculation + check("void f()\n" + "{\n" + " int ar[5];\n" + " for (int i = 10; i < 20; ++i)\n" + " {\n" + " ar[(i - 10) / 2] = 0;\n" + " }\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + TODO_ASSERT_EQUALS("[test.cpp:6]: (error) Array index out of bounds\n", errout.str()); + } + void buffer_overrun_1() { check("void f()\n"