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() {