Add memory poisoning hooks
Signed-off-by: David Horstmann <david.horstmann@arm.com>
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index c7105a1..80a3237 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -226,7 +226,10 @@
PUBLIC ${MBEDTLS_DIR}/include/
PUBLIC ${thirdparty_inc_public}
PRIVATE ${MBEDTLS_DIR}/library/
- PRIVATE ${thirdparty_inc})
+ PRIVATE ${thirdparty_inc}
+ # Needed to include psa_crypto_driver_wrappers.h
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${MBEDTLS_DIR}/tests/include/)
target_compile_definitions(${target}
PRIVATE ${thirdparty_def})
# Pass-through MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 094b526..60c81a5 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -73,6 +73,10 @@
#include "mbedtls/sha512.h"
#include "mbedtls/xtea.h"
+#if defined(MBEDTLS_TEST_HOOKS)
+#include "test/memory.h"
+#endif
+
#define ARRAY_LENGTH(array) (sizeof(array) / sizeof(*(array)))
/****************************************************************/
@@ -5531,10 +5535,18 @@
return PSA_ERROR_CORRUPTION_DETECTED;
}
+#if defined(MBEDTLS_TEST_HOOKS)
+ MBEDTLS_TEST_MEMORY_UNPOISON(input, input_len);
+#endif
+
if (input_len > 0) {
memcpy(input_copy, input, input_len);
}
+#if defined(MBEDTLS_TEST_HOOKS)
+ MBEDTLS_TEST_MEMORY_POISON(input, input_len);
+#endif
+
return PSA_SUCCESS;
}
@@ -5558,10 +5570,18 @@
return PSA_ERROR_BUFFER_TOO_SMALL;
}
+#if defined(MBEDTLS_TEST_HOOKS)
+ MBEDTLS_TEST_MEMORY_UNPOISON(output, output_len);
+#endif
+
if (output_copy_len > 0) {
memcpy(output, output_copy, output_copy_len);
}
+#if defined(MBEDTLS_TEST_HOOKS)
+ MBEDTLS_TEST_MEMORY_POISON(output, output_len);
+#endif
+
return PSA_SUCCESS;
}