From 16b7de032cbf5f32dbea6b5883eefcdea6d20990 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:09:13 +0100 Subject: [PATCH 1/5] Update std.cfg --- cfg/std.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/cfg/std.cfg b/cfg/std.cfg index e48b9c672b4..2968247285c 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -4820,6 +4820,7 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun + From 4399ab532335b5ffeb8a93350fc776736b5bcb7b Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:10:39 +0100 Subject: [PATCH 2/5] Update testbufferoverrun.cpp --- test/testbufferoverrun.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 3402d8452bf..845a0486356 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -3151,6 +3151,13 @@ class TestBufferOverrun : public TestFixture { " strcat(n, \"def\");\n" "}"); TODO_ASSERT_EQUALS("[test.cpp:5]: (error) Buffer is accessed out of bounds: n\n", "", errout_str()); + + check("void f()\n" // 12489 + "{\n" + " char d[3];\n" + " strcat(d, \"12345678\");\n" + "}"); + ASSERT_EQUALS("[test.cpp:4]: (error) Buffer is accessed out of bounds: d\n", errout_str()); } void buffer_overrun_7() { From a505e4a5f7303583804fdf4959d5fe9d7de0db35 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:12:24 +0100 Subject: [PATCH 3/5] Update testbufferoverrun.cpp --- test/testbufferoverrun.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 845a0486356..89774dec007 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -3152,7 +3152,7 @@ class TestBufferOverrun : public TestFixture { "}"); TODO_ASSERT_EQUALS("[test.cpp:5]: (error) Buffer is accessed out of bounds: n\n", "", errout_str()); - check("void f()\n" // 12489 + check("void f()\n" // #12489 "{\n" " char d[3];\n" " strcat(d, \"12345678\");\n" From 2189ff32f2b8a0efed5837592f64f2197c895def Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:21:56 +0100 Subject: [PATCH 4/5] Update std.c --- test/cfg/std.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cfg/std.c b/test/cfg/std.c index e4fa9db4a07..7d7a65b3851 100644 --- a/test/cfg/std.c +++ b/test/cfg/std.c @@ -3446,7 +3446,7 @@ void bufferAccessOutOfBounds_strcat(char *dest, const char * const source) char buf4[4] = {0}; const char * const srcstr3 = "123"; const char * const srcstr4 = "1234"; - // @todo #8599 cppcheck-suppress bufferAccessOutOfBounds + // cppcheck-suppress bufferAccessOutOfBounds (void)strcat(buf4,srcstr4); // off by one issue: strcat is appends \0' at the end // no warning shall be shown for From 7dd35e20f4595c03f91019c5cad4e7108aa83a91 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:23:19 +0100 Subject: [PATCH 5/5] Update testbufferoverrun.cpp --- test/testbufferoverrun.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 89774dec007..ea5758b8742 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -3154,10 +3154,17 @@ class TestBufferOverrun : public TestFixture { check("void f()\n" // #12489 "{\n" - " char d[3];\n" + " char d[3] = {};\n" " strcat(d, \"12345678\");\n" "}"); ASSERT_EQUALS("[test.cpp:4]: (error) Buffer is accessed out of bounds: d\n", errout_str()); + + check("void f()\n" + "{\n" + " char d[3] = \"ab\"; \n" + " strcat(d, \"c\");\n" + "}"); + TODO_ASSERT_EQUALS("[test.cpp:4]: (error) Buffer is accessed out of bounds: d\n", "", errout_str()); } void buffer_overrun_7() {