blob: 8c5d5adf654d5f347e6f8d3b13653f49db37fcfc [file] [log] [blame]
Tom Rini0344c602024-10-08 13:56:50 -06001/* BEGIN_HEADER */
2
3/* Test some parts of the test framework. */
4
5#include <test/helpers.h>
6#include <test/memory.h>
7
8/* END_HEADER */
9
10/* BEGIN_DEPENDENCIES */
11
12/* END_DEPENDENCIES */
13
14/* BEGIN_CASE depends_on:MBEDTLS_TEST_MEMORY_CAN_POISON */
15/* Test that poison+unpoison leaves the memory accessible. */
16/* We can't test that poisoning makes the memory inaccessible:
17 * there's no sane way to catch an Asan/Valgrind complaint.
18 * That negative testing is done in programs/test/metatest.c. */
19void memory_poison_unpoison(int align, int size)
20{
21 unsigned char *buf = NULL;
22 const size_t buffer_size = align + size;
23 TEST_CALLOC(buf, buffer_size);
24
25 for (size_t i = 0; i < buffer_size; i++) {
26 buf[i] = (unsigned char) (i & 0xff);
27 }
28
29 const unsigned char *start = buf == NULL ? NULL : buf + align;
30 mbedtls_test_memory_poison(start, (size_t) size);
31 mbedtls_test_memory_unpoison(start, (size_t) size);
32
33 for (size_t i = 0; i < buffer_size; i++) {
34 TEST_EQUAL(buf[i], (unsigned char) (i & 0xff));
35 }
36
37exit:
38 mbedtls_free(buf);
39}
40/* END_CASE */