/* BEGIN_HEADER */ /* Test some parts of the test framework. */ #include #include /* END_HEADER */ /* BEGIN_DEPENDENCIES */ /* END_DEPENDENCIES */ /* BEGIN_CASE depends_on:MBEDTLS_TEST_MEMORY_CAN_POISON */ /* Test that poison+unpoison leaves the memory accessible. */ /* We can't test that poisoning makes the memory inaccessible: * there's no sane way to catch an Asan/Valgrind complaint. * That negative testing is done in programs/test/metatest.c. */ void memory_poison_unpoison(int align, int size) { unsigned char *buf = NULL; const size_t buffer_size = align + size; TEST_CALLOC(buf, buffer_size); for (size_t i = 0; i < buffer_size; i++) { buf[i] = (unsigned char) (i & 0xff); } const unsigned char *start = buf == NULL ? NULL : buf + align; mbedtls_test_memory_poison(start, (size_t) size); mbedtls_test_memory_unpoison(start, (size_t) size); for (size_t i = 0; i < buffer_size; i++) { TEST_EQUAL(buf[i], (unsigned char) (i & 0xff)); } exit: mbedtls_free(buf); } /* END_CASE */