Skip to content

Commit e0946d1

Browse files
author
Daniel Kroening
committed
memcpy/strncpy/strncat overlap check now allows single object
Fixes #3482
1 parent c0ff0d0 commit e0946d1

File tree

4 files changed

+255
-200
lines changed

4 files changed

+255
-200
lines changed
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)