Skip to content

Commit 34df81a

Browse files
authored
Merge pull request #3483 from diffblue/memcpy_overlap
fix memcpy overlap check
2 parents 1eb1df6 + e0946d1 commit 34df81a

File tree

10 files changed

+258
-203
lines changed

10 files changed

+258
-203
lines changed

regression/cbmc/memcpy1/test.desc renamed to regression/cbmc-library/memcpy-02/memcpy1.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CORE
2-
main.c
2+
memcpy1.c
33
--bounds-check --pointer-check
44
^EXIT=10$
55
^SIGNAL=0$

regression/cbmc/memcpy2/test.desc renamed to regression/cbmc-library/memcpy-02/memcpy2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CORE
2-
main.c
2+
memcpy2.c
33

44
^EXIT=0$
55
^SIGNAL=0$

regression/cbmc/memcpy3/test.desc renamed to regression/cbmc-library/memcpy-02/memcpy3.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CORE
2-
main.c
2+
memcpy3.c
33

44
^EXIT=0$
55
^SIGNAL=0$
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include <string.h>
2+
3+
int main()
4+
{
5+
char bufferA[10], bufferB[10];
6+
7+
// ok
8+
memcpy(bufferA, bufferB, 10);
9+
10+
// not ok, overlap, should use memmove
11+
memcpy(bufferA, bufferA + 1, 9);
12+
13+
// ok, no overlap
14+
memcpy(bufferA, bufferA + 5, 5);
15+
16+
// out of bounds
17+
memcpy(bufferA + 1, bufferB, 10);
18+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
memcpy4.c
3+
--pointer-check
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
^\[.*] line 8 memcpy src/dst overlap: SUCCESS$
7+
^\[.*] line 11 memcpy src/dst overlap: FAILURE$
8+
^\[.*] line 14 memcpy src/dst overlap: SUCCESS$
9+
^\[.*] line 17 memcpy src/dst overlap: SUCCESS$
10+
^\[.*] line 17 memcpy destination region writeable: FAILURE$
11+
^VERIFICATION FAILED$
12+
--
13+
^warning: ignoring

scripts/delete_failing_smt2_solver_tests

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ rm havoc_object1/test.desc
139139
rm hex_trace/test.desc
140140
rm integer-assignments1/test.desc
141141
rm little-endian-array1/test.desc
142+
rm memcpy/memcpy4.desc
142143
rm memory_allocation1/test.desc
143144
rm memset1/test.desc
144145
rm mm_io1/test.desc

0 commit comments

Comments
 (0)