Use an array of strings instead of pointer smuggling
Signed-off-by: Bence Szépkúti <bence.szepkuti@arm.com>
diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function
index b99e27d..9e53107 100644
--- a/tests/suites/test_suite_debug.function
+++ b/tests/suites/test_suite_debug.function
@@ -14,6 +14,18 @@
typedef int64_t mbedtls_ms_time_t;
#endif
+typedef enum {
+ PRINTF_SIZET,
+ PRINTF_LONGLONG,
+ PRINTF_MS_TIME,
+} printf_format_indicator_t;
+
+const char *const printf_formats[] = {
+ [PRINTF_SIZET] = "%" MBEDTLS_PRINTF_SIZET,
+ [PRINTF_LONGLONG] = "%" MBEDTLS_PRINTF_LONGLONG,
+ [PRINTF_MS_TIME] = "%" MBEDTLS_PRINTF_MS_TIME,
+};
+
struct buffer_data {
char buf[2000];
char *ptr;
@@ -81,8 +93,7 @@
*/
/* BEGIN_CASE */
-void printf_int_expr(intmax_t smuggle_format_expr, /* TODO: teach test framework about string expressions */
- intmax_t sizeof_x, intmax_t x, char *result)
+void printf_int_expr(int format_indicator, intmax_t sizeof_x, intmax_t x, char *result)
{
#if defined(_WIN32)
/* Windows treats any invalid format specifiers passsed to the CRT as fatal assertion failures.
@@ -95,7 +106,7 @@
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
#endif
- const char *format = (char *) ((uintptr_t) smuggle_format_expr);
+ const char *format = printf_formats[format_indicator];
char *output = NULL;
const size_t n = strlen(result);