summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjvoisin2023-07-08 21:49:15 +0200
committerjvoisin2023-07-08 21:49:15 +0200
commite892e1188129de42ea7068dbaee85e8bc62f7170 (patch)
treec25530cc99fd00e1706bdebcde5cfdbeb7178c32
parent62199030394acd30ab44bc21af7078ae993fd149 (diff)
Add tests for memcpy overflow/underflow
-rw-r--r--tests/Makefile2
-rw-r--r--tests/test_memcpy_overwrite_over.c15
-rw-r--r--tests/test_memcpy_overwrite_under.c15
3 files changed, 32 insertions, 0 deletions
diff --git a/tests/Makefile b/tests/Makefile
index 2ac44ab..f8cd843 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -13,6 +13,8 @@ TARGETS= \
13 test_memcpy_dynamic_write \ 13 test_memcpy_dynamic_write \
14 test_memcpy_static_read \ 14 test_memcpy_static_read \
15 test_memcpy_dynamic_read \ 15 test_memcpy_dynamic_read \
16 test_memcpy_overwrite_over \
17 test_memcpy_overwrite_under \
16 test_mempcpy_static_write \ 18 test_mempcpy_static_write \
17 test_mempcpy_dynamic_write \ 19 test_mempcpy_dynamic_write \
18 test_mempcpy_static_read \ 20 test_mempcpy_static_read \
diff --git a/tests/test_memcpy_overwrite_over.c b/tests/test_memcpy_overwrite_over.c
new file mode 100644
index 0000000..cb1ddc8
--- /dev/null
+++ b/tests/test_memcpy_overwrite_over.c
@@ -0,0 +1,15 @@
1#include "common.h"
2
3#include <string.h>
4
5int main(int argc, char** argv) {
6 char buffer[9] = {'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', '\0'};
7 puts(buffer);
8
9 CHK_FAIL_START
10 memcpy(buffer+1, buffer, 5);
11 CHK_FAIL_END
12
13 puts(buffer);
14 return ret;
15}
diff --git a/tests/test_memcpy_overwrite_under.c b/tests/test_memcpy_overwrite_under.c
new file mode 100644
index 0000000..0811fea
--- /dev/null
+++ b/tests/test_memcpy_overwrite_under.c
@@ -0,0 +1,15 @@
1#include "common.h"
2
3#include <string.h>
4
5int main(int argc, char** argv) {
6 char buffer[9] = {'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', '\0'};
7 puts(buffer);
8
9 CHK_FAIL_START
10 memcpy(buffer-1, buffer, 5);
11 CHK_FAIL_END
12
13 puts(buffer);
14 return ret;
15}