diff --git a/programs/ssl/query_config.c b/programs/ssl/query_config.c
index b523b78..774acdf 100644
--- a/programs/ssl/query_config.c
+++ b/programs/ssl/query_config.c
@@ -112,7 +112,7 @@
 #if defined(MBEDTLS_HAVE_ASM)
     if( strcmp( "MBEDTLS_HAVE_ASM", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HAVE_ASM ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HAVE_ASM ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HAVE_ASM */
@@ -120,7 +120,7 @@
 #if defined(MBEDTLS_NO_UDBL_DIVISION)
     if( strcmp( "MBEDTLS_NO_UDBL_DIVISION", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_NO_UDBL_DIVISION ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_NO_UDBL_DIVISION ) );
         return( 0 );
     }
 #endif /* MBEDTLS_NO_UDBL_DIVISION */
@@ -128,7 +128,7 @@
 #if defined(MBEDTLS_NO_64BIT_MULTIPLICATION)
     if( strcmp( "MBEDTLS_NO_64BIT_MULTIPLICATION", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_NO_64BIT_MULTIPLICATION ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_NO_64BIT_MULTIPLICATION ) );
         return( 0 );
     }
 #endif /* MBEDTLS_NO_64BIT_MULTIPLICATION */
@@ -136,7 +136,7 @@
 #if defined(MBEDTLS_HAVE_SSE2)
     if( strcmp( "MBEDTLS_HAVE_SSE2", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HAVE_SSE2 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HAVE_SSE2 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HAVE_SSE2 */
@@ -144,7 +144,7 @@
 #if defined(MBEDTLS_HAVE_TIME)
     if( strcmp( "MBEDTLS_HAVE_TIME", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HAVE_TIME ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HAVE_TIME ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HAVE_TIME */
@@ -152,7 +152,7 @@
 #if defined(MBEDTLS_HAVE_TIME_DATE)
     if( strcmp( "MBEDTLS_HAVE_TIME_DATE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HAVE_TIME_DATE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HAVE_TIME_DATE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HAVE_TIME_DATE */
@@ -160,7 +160,7 @@
 #if defined(MBEDTLS_PLATFORM_MEMORY)
     if( strcmp( "MBEDTLS_PLATFORM_MEMORY", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_MEMORY ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_MEMORY ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_MEMORY */
@@ -168,7 +168,7 @@
 #if defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
     if( strcmp( "MBEDTLS_PLATFORM_NO_STD_FUNCTIONS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_NO_STD_FUNCTIONS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_NO_STD_FUNCTIONS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */
@@ -176,7 +176,7 @@
 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_EXIT_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_EXIT_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_EXIT_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_EXIT_ALT */
@@ -184,7 +184,7 @@
 #if defined(MBEDTLS_PLATFORM_TIME_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_TIME_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_TIME_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_TIME_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_TIME_ALT */
@@ -192,7 +192,7 @@
 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_FPRINTF_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_FPRINTF_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_FPRINTF_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */
@@ -200,7 +200,7 @@
 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_PRINTF_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_PRINTF_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_PRINTF_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_PRINTF_ALT */
@@ -208,7 +208,7 @@
 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_SNPRINTF_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_SNPRINTF_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_SNPRINTF_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
@@ -216,7 +216,7 @@
 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_NV_SEED_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_NV_SEED_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_NV_SEED_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
@@ -224,7 +224,7 @@
 #if defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT */
@@ -232,7 +232,7 @@
 #if defined(MBEDTLS_DEPRECATED_WARNING)
     if( strcmp( "MBEDTLS_DEPRECATED_WARNING", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DEPRECATED_WARNING ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DEPRECATED_WARNING ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DEPRECATED_WARNING */
@@ -240,7 +240,7 @@
 #if defined(MBEDTLS_DEPRECATED_REMOVED)
     if( strcmp( "MBEDTLS_DEPRECATED_REMOVED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DEPRECATED_REMOVED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DEPRECATED_REMOVED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DEPRECATED_REMOVED */
@@ -248,7 +248,7 @@
 #if defined(MBEDTLS_TIMING_ALT)
     if( strcmp( "MBEDTLS_TIMING_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_TIMING_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_TIMING_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_TIMING_ALT */
@@ -256,7 +256,7 @@
 #if defined(MBEDTLS_AES_ALT)
     if( strcmp( "MBEDTLS_AES_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AES_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AES_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AES_ALT */
@@ -264,7 +264,7 @@
 #if defined(MBEDTLS_ARC4_ALT)
     if( strcmp( "MBEDTLS_ARC4_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ARC4_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ARC4_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ARC4_ALT */
@@ -272,7 +272,7 @@
 #if defined(MBEDTLS_ARIA_ALT)
     if( strcmp( "MBEDTLS_ARIA_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ARIA_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ARIA_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ARIA_ALT */
@@ -280,7 +280,7 @@
 #if defined(MBEDTLS_BLOWFISH_ALT)
     if( strcmp( "MBEDTLS_BLOWFISH_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_BLOWFISH_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_BLOWFISH_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_BLOWFISH_ALT */
@@ -288,7 +288,7 @@
 #if defined(MBEDTLS_CAMELLIA_ALT)
     if( strcmp( "MBEDTLS_CAMELLIA_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CAMELLIA_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CAMELLIA_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CAMELLIA_ALT */
@@ -296,7 +296,7 @@
 #if defined(MBEDTLS_CCM_ALT)
     if( strcmp( "MBEDTLS_CCM_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CCM_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CCM_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CCM_ALT */
@@ -304,7 +304,7 @@
 #if defined(MBEDTLS_CHACHA20_ALT)
     if( strcmp( "MBEDTLS_CHACHA20_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CHACHA20_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CHACHA20_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CHACHA20_ALT */
@@ -312,7 +312,7 @@
 #if defined(MBEDTLS_CHACHAPOLY_ALT)
     if( strcmp( "MBEDTLS_CHACHAPOLY_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CHACHAPOLY_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CHACHAPOLY_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CHACHAPOLY_ALT */
@@ -320,7 +320,7 @@
 #if defined(MBEDTLS_CMAC_ALT)
     if( strcmp( "MBEDTLS_CMAC_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CMAC_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CMAC_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CMAC_ALT */
@@ -328,7 +328,7 @@
 #if defined(MBEDTLS_DES_ALT)
     if( strcmp( "MBEDTLS_DES_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DES_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DES_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DES_ALT */
@@ -336,7 +336,7 @@
 #if defined(MBEDTLS_DHM_ALT)
     if( strcmp( "MBEDTLS_DHM_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DHM_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DHM_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DHM_ALT */
@@ -344,7 +344,7 @@
 #if defined(MBEDTLS_ECJPAKE_ALT)
     if( strcmp( "MBEDTLS_ECJPAKE_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECJPAKE_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECJPAKE_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECJPAKE_ALT */
@@ -352,7 +352,7 @@
 #if defined(MBEDTLS_GCM_ALT)
     if( strcmp( "MBEDTLS_GCM_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_GCM_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_GCM_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_GCM_ALT */
@@ -360,7 +360,7 @@
 #if defined(MBEDTLS_NIST_KW_ALT)
     if( strcmp( "MBEDTLS_NIST_KW_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_NIST_KW_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_NIST_KW_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_NIST_KW_ALT */
@@ -368,7 +368,7 @@
 #if defined(MBEDTLS_MD2_ALT)
     if( strcmp( "MBEDTLS_MD2_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD2_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD2_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD2_ALT */
@@ -376,7 +376,7 @@
 #if defined(MBEDTLS_MD4_ALT)
     if( strcmp( "MBEDTLS_MD4_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD4_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD4_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD4_ALT */
@@ -384,7 +384,7 @@
 #if defined(MBEDTLS_MD5_ALT)
     if( strcmp( "MBEDTLS_MD5_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD5_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD5_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD5_ALT */
@@ -392,7 +392,7 @@
 #if defined(MBEDTLS_POLY1305_ALT)
     if( strcmp( "MBEDTLS_POLY1305_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_POLY1305_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_POLY1305_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_POLY1305_ALT */
@@ -400,7 +400,7 @@
 #if defined(MBEDTLS_RIPEMD160_ALT)
     if( strcmp( "MBEDTLS_RIPEMD160_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_RIPEMD160_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_RIPEMD160_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_RIPEMD160_ALT */
@@ -408,7 +408,7 @@
 #if defined(MBEDTLS_RSA_ALT)
     if( strcmp( "MBEDTLS_RSA_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_RSA_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_RSA_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_RSA_ALT */
@@ -416,7 +416,7 @@
 #if defined(MBEDTLS_SHA1_ALT)
     if( strcmp( "MBEDTLS_SHA1_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA1_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA1_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA1_ALT */
@@ -424,7 +424,7 @@
 #if defined(MBEDTLS_SHA256_ALT)
     if( strcmp( "MBEDTLS_SHA256_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA256_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA256_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA256_ALT */
@@ -432,7 +432,7 @@
 #if defined(MBEDTLS_SHA512_ALT)
     if( strcmp( "MBEDTLS_SHA512_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA512_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA512_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA512_ALT */
@@ -440,7 +440,7 @@
 #if defined(MBEDTLS_XTEA_ALT)
     if( strcmp( "MBEDTLS_XTEA_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_XTEA_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_XTEA_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_XTEA_ALT */
@@ -448,7 +448,7 @@
 #if defined(MBEDTLS_ECP_ALT)
     if( strcmp( "MBEDTLS_ECP_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_ALT */
@@ -456,7 +456,7 @@
 #if defined(MBEDTLS_MD2_PROCESS_ALT)
     if( strcmp( "MBEDTLS_MD2_PROCESS_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD2_PROCESS_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD2_PROCESS_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD2_PROCESS_ALT */
@@ -464,7 +464,7 @@
 #if defined(MBEDTLS_MD4_PROCESS_ALT)
     if( strcmp( "MBEDTLS_MD4_PROCESS_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD4_PROCESS_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD4_PROCESS_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD4_PROCESS_ALT */
@@ -472,7 +472,7 @@
 #if defined(MBEDTLS_MD5_PROCESS_ALT)
     if( strcmp( "MBEDTLS_MD5_PROCESS_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD5_PROCESS_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD5_PROCESS_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD5_PROCESS_ALT */
@@ -480,7 +480,7 @@
 #if defined(MBEDTLS_RIPEMD160_PROCESS_ALT)
     if( strcmp( "MBEDTLS_RIPEMD160_PROCESS_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_RIPEMD160_PROCESS_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_RIPEMD160_PROCESS_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_RIPEMD160_PROCESS_ALT */
@@ -488,7 +488,7 @@
 #if defined(MBEDTLS_SHA1_PROCESS_ALT)
     if( strcmp( "MBEDTLS_SHA1_PROCESS_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA1_PROCESS_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA1_PROCESS_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA1_PROCESS_ALT */
@@ -496,7 +496,7 @@
 #if defined(MBEDTLS_SHA256_PROCESS_ALT)
     if( strcmp( "MBEDTLS_SHA256_PROCESS_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA256_PROCESS_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA256_PROCESS_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA256_PROCESS_ALT */
@@ -504,7 +504,7 @@
 #if defined(MBEDTLS_SHA512_PROCESS_ALT)
     if( strcmp( "MBEDTLS_SHA512_PROCESS_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA512_PROCESS_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA512_PROCESS_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA512_PROCESS_ALT */
@@ -512,7 +512,7 @@
 #if defined(MBEDTLS_DES_SETKEY_ALT)
     if( strcmp( "MBEDTLS_DES_SETKEY_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DES_SETKEY_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DES_SETKEY_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DES_SETKEY_ALT */
@@ -520,7 +520,7 @@
 #if defined(MBEDTLS_DES_CRYPT_ECB_ALT)
     if( strcmp( "MBEDTLS_DES_CRYPT_ECB_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DES_CRYPT_ECB_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DES_CRYPT_ECB_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DES_CRYPT_ECB_ALT */
@@ -528,7 +528,7 @@
 #if defined(MBEDTLS_DES3_CRYPT_ECB_ALT)
     if( strcmp( "MBEDTLS_DES3_CRYPT_ECB_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DES3_CRYPT_ECB_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DES3_CRYPT_ECB_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DES3_CRYPT_ECB_ALT */
@@ -536,7 +536,7 @@
 #if defined(MBEDTLS_AES_SETKEY_ENC_ALT)
     if( strcmp( "MBEDTLS_AES_SETKEY_ENC_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AES_SETKEY_ENC_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AES_SETKEY_ENC_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AES_SETKEY_ENC_ALT */
@@ -544,7 +544,7 @@
 #if defined(MBEDTLS_AES_SETKEY_DEC_ALT)
     if( strcmp( "MBEDTLS_AES_SETKEY_DEC_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AES_SETKEY_DEC_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AES_SETKEY_DEC_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AES_SETKEY_DEC_ALT */
@@ -552,7 +552,7 @@
 #if defined(MBEDTLS_AES_ENCRYPT_ALT)
     if( strcmp( "MBEDTLS_AES_ENCRYPT_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AES_ENCRYPT_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AES_ENCRYPT_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AES_ENCRYPT_ALT */
@@ -560,7 +560,7 @@
 #if defined(MBEDTLS_AES_DECRYPT_ALT)
     if( strcmp( "MBEDTLS_AES_DECRYPT_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AES_DECRYPT_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AES_DECRYPT_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AES_DECRYPT_ALT */
@@ -568,7 +568,7 @@
 #if defined(MBEDTLS_ECDH_GEN_PUBLIC_ALT)
     if( strcmp( "MBEDTLS_ECDH_GEN_PUBLIC_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECDH_GEN_PUBLIC_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECDH_GEN_PUBLIC_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECDH_GEN_PUBLIC_ALT */
@@ -576,7 +576,7 @@
 #if defined(MBEDTLS_ECDH_COMPUTE_SHARED_ALT)
     if( strcmp( "MBEDTLS_ECDH_COMPUTE_SHARED_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECDH_COMPUTE_SHARED_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECDH_COMPUTE_SHARED_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECDH_COMPUTE_SHARED_ALT */
@@ -584,7 +584,7 @@
 #if defined(MBEDTLS_ECDSA_VERIFY_ALT)
     if( strcmp( "MBEDTLS_ECDSA_VERIFY_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_VERIFY_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_VERIFY_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECDSA_VERIFY_ALT */
@@ -592,7 +592,7 @@
 #if defined(MBEDTLS_ECDSA_SIGN_ALT)
     if( strcmp( "MBEDTLS_ECDSA_SIGN_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_SIGN_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_SIGN_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECDSA_SIGN_ALT */
@@ -600,7 +600,7 @@
 #if defined(MBEDTLS_ECDSA_GENKEY_ALT)
     if( strcmp( "MBEDTLS_ECDSA_GENKEY_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_GENKEY_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_GENKEY_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECDSA_GENKEY_ALT */
@@ -608,7 +608,7 @@
 #if defined(MBEDTLS_ECP_INTERNAL_ALT)
     if( strcmp( "MBEDTLS_ECP_INTERNAL_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_INTERNAL_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_INTERNAL_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_INTERNAL_ALT */
@@ -616,7 +616,7 @@
 #if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT)
     if( strcmp( "MBEDTLS_ECP_RANDOMIZE_JAC_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_RANDOMIZE_JAC_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_RANDOMIZE_JAC_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_RANDOMIZE_JAC_ALT */
@@ -624,7 +624,7 @@
 #if defined(MBEDTLS_ECP_ADD_MIXED_ALT)
     if( strcmp( "MBEDTLS_ECP_ADD_MIXED_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_ADD_MIXED_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_ADD_MIXED_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_ADD_MIXED_ALT */
@@ -632,7 +632,7 @@
 #if defined(MBEDTLS_ECP_DOUBLE_JAC_ALT)
     if( strcmp( "MBEDTLS_ECP_DOUBLE_JAC_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DOUBLE_JAC_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DOUBLE_JAC_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DOUBLE_JAC_ALT */
@@ -640,7 +640,7 @@
 #if defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT)
     if( strcmp( "MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT */
@@ -648,7 +648,7 @@
 #if defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT)
     if( strcmp( "MBEDTLS_ECP_NORMALIZE_JAC_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_NORMALIZE_JAC_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_NORMALIZE_JAC_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_NORMALIZE_JAC_ALT */
@@ -656,7 +656,7 @@
 #if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT)
     if( strcmp( "MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT */
@@ -664,7 +664,7 @@
 #if defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT)
     if( strcmp( "MBEDTLS_ECP_RANDOMIZE_MXZ_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_RANDOMIZE_MXZ_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_RANDOMIZE_MXZ_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_RANDOMIZE_MXZ_ALT */
@@ -672,7 +672,7 @@
 #if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT)
     if( strcmp( "MBEDTLS_ECP_NORMALIZE_MXZ_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_NORMALIZE_MXZ_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_NORMALIZE_MXZ_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_NORMALIZE_MXZ_ALT */
@@ -680,7 +680,7 @@
 #if defined(MBEDTLS_TEST_NULL_ENTROPY)
     if( strcmp( "MBEDTLS_TEST_NULL_ENTROPY", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_TEST_NULL_ENTROPY ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_TEST_NULL_ENTROPY ) );
         return( 0 );
     }
 #endif /* MBEDTLS_TEST_NULL_ENTROPY */
@@ -688,7 +688,7 @@
 #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
     if( strcmp( "MBEDTLS_ENTROPY_HARDWARE_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_HARDWARE_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_HARDWARE_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ENTROPY_HARDWARE_ALT */
@@ -696,7 +696,7 @@
 #if defined(MBEDTLS_AES_ROM_TABLES)
     if( strcmp( "MBEDTLS_AES_ROM_TABLES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AES_ROM_TABLES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AES_ROM_TABLES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AES_ROM_TABLES */
@@ -704,7 +704,7 @@
 #if defined(MBEDTLS_AES_FEWER_TABLES)
     if( strcmp( "MBEDTLS_AES_FEWER_TABLES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AES_FEWER_TABLES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AES_FEWER_TABLES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AES_FEWER_TABLES */
@@ -712,7 +712,7 @@
 #if defined(MBEDTLS_CAMELLIA_SMALL_MEMORY)
     if( strcmp( "MBEDTLS_CAMELLIA_SMALL_MEMORY", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CAMELLIA_SMALL_MEMORY ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CAMELLIA_SMALL_MEMORY ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CAMELLIA_SMALL_MEMORY */
@@ -720,7 +720,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CBC)
     if( strcmp( "MBEDTLS_CIPHER_MODE_CBC", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_CBC ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_CBC ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_MODE_CBC */
@@ -728,7 +728,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CFB)
     if( strcmp( "MBEDTLS_CIPHER_MODE_CFB", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_CFB ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_CFB ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_MODE_CFB */
@@ -736,7 +736,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CTR)
     if( strcmp( "MBEDTLS_CIPHER_MODE_CTR", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_CTR ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_CTR ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_MODE_CTR */
@@ -744,7 +744,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_OFB)
     if( strcmp( "MBEDTLS_CIPHER_MODE_OFB", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_OFB ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_OFB ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_MODE_OFB */
@@ -752,7 +752,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_XTS)
     if( strcmp( "MBEDTLS_CIPHER_MODE_XTS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_XTS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_MODE_XTS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_MODE_XTS */
@@ -760,7 +760,7 @@
 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
     if( strcmp( "MBEDTLS_CIPHER_NULL_CIPHER", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_NULL_CIPHER ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_NULL_CIPHER ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
@@ -768,7 +768,7 @@
 #if defined(MBEDTLS_CIPHER_PADDING_PKCS7)
     if( strcmp( "MBEDTLS_CIPHER_PADDING_PKCS7", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_PADDING_PKCS7 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_PADDING_PKCS7 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_PADDING_PKCS7 */
@@ -776,7 +776,7 @@
 #if defined(MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS)
     if( strcmp( "MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS */
@@ -784,7 +784,7 @@
 #if defined(MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN)
     if( strcmp( "MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN */
@@ -792,7 +792,7 @@
 #if defined(MBEDTLS_CIPHER_PADDING_ZEROS)
     if( strcmp( "MBEDTLS_CIPHER_PADDING_ZEROS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_PADDING_ZEROS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_PADDING_ZEROS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_PADDING_ZEROS */
@@ -800,7 +800,7 @@
 #if defined(MBEDTLS_ENABLE_WEAK_CIPHERSUITES)
     if( strcmp( "MBEDTLS_ENABLE_WEAK_CIPHERSUITES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ENABLE_WEAK_CIPHERSUITES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ENABLE_WEAK_CIPHERSUITES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ENABLE_WEAK_CIPHERSUITES */
@@ -808,7 +808,7 @@
 #if defined(MBEDTLS_REMOVE_ARC4_CIPHERSUITES)
     if( strcmp( "MBEDTLS_REMOVE_ARC4_CIPHERSUITES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_REMOVE_ARC4_CIPHERSUITES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_REMOVE_ARC4_CIPHERSUITES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_REMOVE_ARC4_CIPHERSUITES */
@@ -816,7 +816,7 @@
 #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_SECP192R1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP192R1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP192R1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
@@ -824,7 +824,7 @@
 #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_SECP224R1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP224R1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP224R1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
@@ -832,7 +832,7 @@
 #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_SECP256R1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP256R1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP256R1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
@@ -840,7 +840,7 @@
 #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_SECP384R1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP384R1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP384R1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
@@ -848,7 +848,7 @@
 #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_SECP521R1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP521R1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP521R1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
@@ -856,7 +856,7 @@
 #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_SECP192K1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP192K1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP192K1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
@@ -864,7 +864,7 @@
 #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_SECP224K1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP224K1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP224K1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
@@ -872,7 +872,7 @@
 #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_SECP256K1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP256K1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_SECP256K1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
@@ -880,7 +880,7 @@
 #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_BP256R1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_BP256R1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_BP256R1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */
@@ -888,7 +888,7 @@
 #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_BP384R1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_BP384R1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_BP384R1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */
@@ -896,7 +896,7 @@
 #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_BP512R1_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_BP512R1_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_BP512R1_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */
@@ -904,7 +904,7 @@
 #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_CURVE25519_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_CURVE25519_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_CURVE25519_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
@@ -912,7 +912,7 @@
 #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
     if( strcmp( "MBEDTLS_ECP_DP_CURVE448_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_CURVE448_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_DP_CURVE448_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */
@@ -920,7 +920,7 @@
 #if defined(MBEDTLS_ECP_NIST_OPTIM)
     if( strcmp( "MBEDTLS_ECP_NIST_OPTIM", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_NIST_OPTIM ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_NIST_OPTIM ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_NIST_OPTIM */
@@ -928,7 +928,7 @@
 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
     if( strcmp( "MBEDTLS_ECDSA_DETERMINISTIC", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_DETERMINISTIC ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_DETERMINISTIC ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
@@ -936,7 +936,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_PSK_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_PSK_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_PSK_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */
@@ -944,7 +944,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */
@@ -952,7 +952,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
@@ -960,7 +960,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */
@@ -968,7 +968,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_RSA_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_RSA_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_RSA_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */
@@ -976,7 +976,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */
@@ -984,7 +984,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
@@ -992,7 +992,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
@@ -1000,7 +1000,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
@@ -1008,7 +1008,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED */
@@ -1016,7 +1016,7 @@
 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
     if( strcmp( "MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */
@@ -1024,7 +1024,7 @@
 #if defined(MBEDTLS_PK_PARSE_EC_EXTENDED)
     if( strcmp( "MBEDTLS_PK_PARSE_EC_EXTENDED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PK_PARSE_EC_EXTENDED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PK_PARSE_EC_EXTENDED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PK_PARSE_EC_EXTENDED */
@@ -1032,7 +1032,7 @@
 #if defined(MBEDTLS_ERROR_STRERROR_DUMMY)
     if( strcmp( "MBEDTLS_ERROR_STRERROR_DUMMY", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ERROR_STRERROR_DUMMY ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ERROR_STRERROR_DUMMY ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ERROR_STRERROR_DUMMY */
@@ -1040,7 +1040,7 @@
 #if defined(MBEDTLS_GENPRIME)
     if( strcmp( "MBEDTLS_GENPRIME", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_GENPRIME ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_GENPRIME ) );
         return( 0 );
     }
 #endif /* MBEDTLS_GENPRIME */
@@ -1048,7 +1048,7 @@
 #if defined(MBEDTLS_FS_IO)
     if( strcmp( "MBEDTLS_FS_IO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_FS_IO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_FS_IO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_FS_IO */
@@ -1056,7 +1056,7 @@
 #if defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
     if( strcmp( "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES */
@@ -1064,7 +1064,7 @@
 #if defined(MBEDTLS_NO_PLATFORM_ENTROPY)
     if( strcmp( "MBEDTLS_NO_PLATFORM_ENTROPY", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_NO_PLATFORM_ENTROPY ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_NO_PLATFORM_ENTROPY ) );
         return( 0 );
     }
 #endif /* MBEDTLS_NO_PLATFORM_ENTROPY */
@@ -1072,7 +1072,7 @@
 #if defined(MBEDTLS_ENTROPY_FORCE_SHA256)
     if( strcmp( "MBEDTLS_ENTROPY_FORCE_SHA256", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_FORCE_SHA256 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_FORCE_SHA256 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ENTROPY_FORCE_SHA256 */
@@ -1080,7 +1080,7 @@
 #if defined(MBEDTLS_ENTROPY_NV_SEED)
     if( strcmp( "MBEDTLS_ENTROPY_NV_SEED", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_NV_SEED ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_NV_SEED ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ENTROPY_NV_SEED */
@@ -1088,7 +1088,7 @@
 #if defined(MBEDTLS_MEMORY_DEBUG)
     if( strcmp( "MBEDTLS_MEMORY_DEBUG", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MEMORY_DEBUG ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MEMORY_DEBUG ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MEMORY_DEBUG */
@@ -1096,7 +1096,7 @@
 #if defined(MBEDTLS_MEMORY_BACKTRACE)
     if( strcmp( "MBEDTLS_MEMORY_BACKTRACE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MEMORY_BACKTRACE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MEMORY_BACKTRACE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MEMORY_BACKTRACE */
@@ -1104,7 +1104,7 @@
 #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT)
     if( strcmp( "MBEDTLS_PK_RSA_ALT_SUPPORT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PK_RSA_ALT_SUPPORT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PK_RSA_ALT_SUPPORT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */
@@ -1112,7 +1112,7 @@
 #if defined(MBEDTLS_PKCS1_V15)
     if( strcmp( "MBEDTLS_PKCS1_V15", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS1_V15 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS1_V15 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PKCS1_V15 */
@@ -1120,7 +1120,7 @@
 #if defined(MBEDTLS_PKCS1_V21)
     if( strcmp( "MBEDTLS_PKCS1_V21", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS1_V21 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS1_V21 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PKCS1_V21 */
@@ -1128,7 +1128,7 @@
 #if defined(MBEDTLS_RSA_NO_CRT)
     if( strcmp( "MBEDTLS_RSA_NO_CRT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_RSA_NO_CRT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_RSA_NO_CRT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_RSA_NO_CRT */
@@ -1136,7 +1136,7 @@
 #if defined(MBEDTLS_SELF_TEST)
     if( strcmp( "MBEDTLS_SELF_TEST", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SELF_TEST ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SELF_TEST ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SELF_TEST */
@@ -1144,7 +1144,7 @@
 #if defined(MBEDTLS_SHA256_SMALLER)
     if( strcmp( "MBEDTLS_SHA256_SMALLER", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA256_SMALLER ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA256_SMALLER ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA256_SMALLER */
@@ -1152,7 +1152,7 @@
 #if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES)
     if( strcmp( "MBEDTLS_SSL_ALL_ALERT_MESSAGES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_ALL_ALERT_MESSAGES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_ALL_ALERT_MESSAGES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_ALL_ALERT_MESSAGES */
@@ -1160,7 +1160,7 @@
 #if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
     if( strcmp( "MBEDTLS_SSL_ASYNC_PRIVATE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_ASYNC_PRIVATE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_ASYNC_PRIVATE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */
@@ -1168,7 +1168,7 @@
 #if defined(MBEDTLS_SSL_DEBUG_ALL)
     if( strcmp( "MBEDTLS_SSL_DEBUG_ALL", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DEBUG_ALL ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DEBUG_ALL ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_DEBUG_ALL */
@@ -1176,7 +1176,7 @@
 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
     if( strcmp( "MBEDTLS_SSL_ENCRYPT_THEN_MAC", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_ENCRYPT_THEN_MAC ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_ENCRYPT_THEN_MAC ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */
@@ -1184,7 +1184,7 @@
 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET)
     if( strcmp( "MBEDTLS_SSL_EXTENDED_MASTER_SECRET", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_EXTENDED_MASTER_SECRET ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_EXTENDED_MASTER_SECRET ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_EXTENDED_MASTER_SECRET */
@@ -1192,7 +1192,7 @@
 #if defined(MBEDTLS_SSL_FALLBACK_SCSV)
     if( strcmp( "MBEDTLS_SSL_FALLBACK_SCSV", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_FALLBACK_SCSV ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_FALLBACK_SCSV ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_FALLBACK_SCSV */
@@ -1200,7 +1200,7 @@
 #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL)
     if( strcmp( "MBEDTLS_SSL_HW_RECORD_ACCEL", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_HW_RECORD_ACCEL ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_HW_RECORD_ACCEL ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */
@@ -1208,7 +1208,7 @@
 #if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING)
     if( strcmp( "MBEDTLS_SSL_CBC_RECORD_SPLITTING", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CBC_RECORD_SPLITTING ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CBC_RECORD_SPLITTING ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_CBC_RECORD_SPLITTING */
@@ -1216,7 +1216,7 @@
 #if defined(MBEDTLS_SSL_RENEGOTIATION)
     if( strcmp( "MBEDTLS_SSL_RENEGOTIATION", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_RENEGOTIATION ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_RENEGOTIATION ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_RENEGOTIATION */
@@ -1224,7 +1224,7 @@
 #if defined(MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO)
     if( strcmp( "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO */
@@ -1232,7 +1232,7 @@
 #if defined(MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE)
     if( strcmp( "MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE */
@@ -1240,7 +1240,7 @@
 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
     if( strcmp( "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_MAX_FRAGMENT_LENGTH ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_MAX_FRAGMENT_LENGTH ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */
@@ -1248,7 +1248,7 @@
 #if defined(MBEDTLS_SSL_PROTO_SSL3)
     if( strcmp( "MBEDTLS_SSL_PROTO_SSL3", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_SSL3 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_SSL3 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_PROTO_SSL3 */
@@ -1256,7 +1256,7 @@
 #if defined(MBEDTLS_SSL_PROTO_TLS1)
     if( strcmp( "MBEDTLS_SSL_PROTO_TLS1", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_TLS1 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_TLS1 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_PROTO_TLS1 */
@@ -1264,7 +1264,7 @@
 #if defined(MBEDTLS_SSL_PROTO_TLS1_1)
     if( strcmp( "MBEDTLS_SSL_PROTO_TLS1_1", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_TLS1_1 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_TLS1_1 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_PROTO_TLS1_1 */
@@ -1272,7 +1272,7 @@
 #if defined(MBEDTLS_SSL_PROTO_TLS1_2)
     if( strcmp( "MBEDTLS_SSL_PROTO_TLS1_2", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_TLS1_2 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_TLS1_2 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
@@ -1280,7 +1280,7 @@
 #if defined(MBEDTLS_SSL_PROTO_DTLS)
     if( strcmp( "MBEDTLS_SSL_PROTO_DTLS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_DTLS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_PROTO_DTLS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_PROTO_DTLS */
@@ -1288,7 +1288,7 @@
 #if defined(MBEDTLS_SSL_ALPN)
     if( strcmp( "MBEDTLS_SSL_ALPN", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_ALPN ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_ALPN ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_ALPN */
@@ -1296,7 +1296,7 @@
 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
     if( strcmp( "MBEDTLS_SSL_DTLS_ANTI_REPLAY", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_ANTI_REPLAY ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_ANTI_REPLAY ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */
@@ -1304,7 +1304,7 @@
 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY)
     if( strcmp( "MBEDTLS_SSL_DTLS_HELLO_VERIFY", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_HELLO_VERIFY ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_HELLO_VERIFY ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY */
@@ -1312,7 +1312,7 @@
 #if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE)
     if( strcmp( "MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE */
@@ -1320,7 +1320,7 @@
 #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT)
     if( strcmp( "MBEDTLS_SSL_DTLS_BADMAC_LIMIT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_BADMAC_LIMIT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_BADMAC_LIMIT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */
@@ -1328,7 +1328,7 @@
 #if defined(MBEDTLS_SSL_SESSION_TICKETS)
     if( strcmp( "MBEDTLS_SSL_SESSION_TICKETS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SESSION_TICKETS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SESSION_TICKETS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_SESSION_TICKETS */
@@ -1336,7 +1336,7 @@
 #if defined(MBEDTLS_SSL_EXPORT_KEYS)
     if( strcmp( "MBEDTLS_SSL_EXPORT_KEYS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_EXPORT_KEYS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_EXPORT_KEYS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_EXPORT_KEYS */
@@ -1344,7 +1344,7 @@
 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
     if( strcmp( "MBEDTLS_SSL_SERVER_NAME_INDICATION", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SERVER_NAME_INDICATION ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SERVER_NAME_INDICATION ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */
@@ -1352,7 +1352,7 @@
 #if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
     if( strcmp( "MBEDTLS_SSL_TRUNCATED_HMAC", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_TRUNCATED_HMAC ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_TRUNCATED_HMAC ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */
@@ -1360,7 +1360,7 @@
 #if defined(MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT)
     if( strcmp( "MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT */
@@ -1368,7 +1368,7 @@
 #if defined(MBEDTLS_THREADING_ALT)
     if( strcmp( "MBEDTLS_THREADING_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_THREADING_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_THREADING_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_THREADING_ALT */
@@ -1376,7 +1376,7 @@
 #if defined(MBEDTLS_THREADING_PTHREAD)
     if( strcmp( "MBEDTLS_THREADING_PTHREAD", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_THREADING_PTHREAD ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_THREADING_PTHREAD ) );
         return( 0 );
     }
 #endif /* MBEDTLS_THREADING_PTHREAD */
@@ -1384,7 +1384,7 @@
 #if defined(MBEDTLS_VERSION_FEATURES)
     if( strcmp( "MBEDTLS_VERSION_FEATURES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_VERSION_FEATURES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_VERSION_FEATURES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_VERSION_FEATURES */
@@ -1392,7 +1392,7 @@
 #if defined(MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3)
     if( strcmp( "MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 */
@@ -1400,7 +1400,7 @@
 #if defined(MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION)
     if( strcmp( "MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION */
@@ -1408,7 +1408,7 @@
 #if defined(MBEDTLS_X509_CHECK_KEY_USAGE)
     if( strcmp( "MBEDTLS_X509_CHECK_KEY_USAGE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CHECK_KEY_USAGE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CHECK_KEY_USAGE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_CHECK_KEY_USAGE */
@@ -1416,7 +1416,7 @@
 #if defined(MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE)
     if( strcmp( "MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE */
@@ -1424,7 +1424,7 @@
 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT)
     if( strcmp( "MBEDTLS_X509_RSASSA_PSS_SUPPORT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_RSASSA_PSS_SUPPORT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_RSASSA_PSS_SUPPORT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_RSASSA_PSS_SUPPORT */
@@ -1432,7 +1432,7 @@
 #if defined(MBEDTLS_ZLIB_SUPPORT)
     if( strcmp( "MBEDTLS_ZLIB_SUPPORT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ZLIB_SUPPORT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ZLIB_SUPPORT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ZLIB_SUPPORT */
@@ -1440,7 +1440,7 @@
 #if defined(MBEDTLS_AESNI_C)
     if( strcmp( "MBEDTLS_AESNI_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AESNI_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AESNI_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AESNI_C */
@@ -1448,7 +1448,7 @@
 #if defined(MBEDTLS_AES_C)
     if( strcmp( "MBEDTLS_AES_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_AES_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_AES_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_AES_C */
@@ -1456,7 +1456,7 @@
 #if defined(MBEDTLS_ARC4_C)
     if( strcmp( "MBEDTLS_ARC4_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ARC4_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ARC4_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ARC4_C */
@@ -1464,7 +1464,7 @@
 #if defined(MBEDTLS_ASN1_PARSE_C)
     if( strcmp( "MBEDTLS_ASN1_PARSE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ASN1_PARSE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ASN1_PARSE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ASN1_PARSE_C */
@@ -1472,7 +1472,7 @@
 #if defined(MBEDTLS_ASN1_WRITE_C)
     if( strcmp( "MBEDTLS_ASN1_WRITE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ASN1_WRITE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ASN1_WRITE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ASN1_WRITE_C */
@@ -1480,7 +1480,7 @@
 #if defined(MBEDTLS_BASE64_C)
     if( strcmp( "MBEDTLS_BASE64_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_BASE64_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_BASE64_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_BASE64_C */
@@ -1488,7 +1488,7 @@
 #if defined(MBEDTLS_BIGNUM_C)
     if( strcmp( "MBEDTLS_BIGNUM_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_BIGNUM_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_BIGNUM_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_BIGNUM_C */
@@ -1496,7 +1496,7 @@
 #if defined(MBEDTLS_BLOWFISH_C)
     if( strcmp( "MBEDTLS_BLOWFISH_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_BLOWFISH_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_BLOWFISH_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_BLOWFISH_C */
@@ -1504,7 +1504,7 @@
 #if defined(MBEDTLS_CAMELLIA_C)
     if( strcmp( "MBEDTLS_CAMELLIA_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CAMELLIA_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CAMELLIA_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CAMELLIA_C */
@@ -1512,7 +1512,7 @@
 #if defined(MBEDTLS_ARIA_C)
     if( strcmp( "MBEDTLS_ARIA_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ARIA_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ARIA_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ARIA_C */
@@ -1520,7 +1520,7 @@
 #if defined(MBEDTLS_CCM_C)
     if( strcmp( "MBEDTLS_CCM_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CCM_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CCM_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CCM_C */
@@ -1528,7 +1528,7 @@
 #if defined(MBEDTLS_CERTS_C)
     if( strcmp( "MBEDTLS_CERTS_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CERTS_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CERTS_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CERTS_C */
@@ -1536,7 +1536,7 @@
 #if defined(MBEDTLS_CHACHA20_C)
     if( strcmp( "MBEDTLS_CHACHA20_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CHACHA20_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CHACHA20_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CHACHA20_C */
@@ -1544,7 +1544,7 @@
 #if defined(MBEDTLS_CHACHAPOLY_C)
     if( strcmp( "MBEDTLS_CHACHAPOLY_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CHACHAPOLY_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CHACHAPOLY_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CHACHAPOLY_C */
@@ -1552,7 +1552,7 @@
 #if defined(MBEDTLS_CIPHER_C)
     if( strcmp( "MBEDTLS_CIPHER_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CIPHER_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CIPHER_C */
@@ -1560,7 +1560,7 @@
 #if defined(MBEDTLS_CMAC_C)
     if( strcmp( "MBEDTLS_CMAC_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CMAC_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CMAC_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CMAC_C */
@@ -1568,7 +1568,7 @@
 #if defined(MBEDTLS_CTR_DRBG_C)
     if( strcmp( "MBEDTLS_CTR_DRBG_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CTR_DRBG_C */
@@ -1576,7 +1576,7 @@
 #if defined(MBEDTLS_DEBUG_C)
     if( strcmp( "MBEDTLS_DEBUG_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DEBUG_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DEBUG_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DEBUG_C */
@@ -1584,7 +1584,7 @@
 #if defined(MBEDTLS_DES_C)
     if( strcmp( "MBEDTLS_DES_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DES_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DES_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DES_C */
@@ -1592,7 +1592,7 @@
 #if defined(MBEDTLS_DHM_C)
     if( strcmp( "MBEDTLS_DHM_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_DHM_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_DHM_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_DHM_C */
@@ -1600,7 +1600,7 @@
 #if defined(MBEDTLS_ECDH_C)
     if( strcmp( "MBEDTLS_ECDH_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECDH_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECDH_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECDH_C */
@@ -1608,7 +1608,7 @@
 #if defined(MBEDTLS_ECDSA_C)
     if( strcmp( "MBEDTLS_ECDSA_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECDSA_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECDSA_C */
@@ -1616,7 +1616,7 @@
 #if defined(MBEDTLS_ECJPAKE_C)
     if( strcmp( "MBEDTLS_ECJPAKE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECJPAKE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECJPAKE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECJPAKE_C */
@@ -1624,7 +1624,7 @@
 #if defined(MBEDTLS_ECP_C)
     if( strcmp( "MBEDTLS_ECP_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_C */
@@ -1632,7 +1632,7 @@
 #if defined(MBEDTLS_ENTROPY_C)
     if( strcmp( "MBEDTLS_ENTROPY_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ENTROPY_C */
@@ -1640,7 +1640,7 @@
 #if defined(MBEDTLS_ERROR_C)
     if( strcmp( "MBEDTLS_ERROR_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ERROR_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ERROR_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ERROR_C */
@@ -1648,7 +1648,7 @@
 #if defined(MBEDTLS_GCM_C)
     if( strcmp( "MBEDTLS_GCM_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_GCM_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_GCM_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_GCM_C */
@@ -1656,7 +1656,7 @@
 #if defined(MBEDTLS_HAVEGE_C)
     if( strcmp( "MBEDTLS_HAVEGE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HAVEGE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HAVEGE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HAVEGE_C */
@@ -1664,7 +1664,7 @@
 #if defined(MBEDTLS_HKDF_C)
     if( strcmp( "MBEDTLS_HKDF_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HKDF_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HKDF_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HKDF_C */
@@ -1672,7 +1672,7 @@
 #if defined(MBEDTLS_HMAC_DRBG_C)
     if( strcmp( "MBEDTLS_HMAC_DRBG_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HMAC_DRBG_C */
@@ -1680,7 +1680,7 @@
 #if defined(MBEDTLS_NIST_KW_C)
     if( strcmp( "MBEDTLS_NIST_KW_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_NIST_KW_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_NIST_KW_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_NIST_KW_C */
@@ -1688,7 +1688,7 @@
 #if defined(MBEDTLS_MD_C)
     if( strcmp( "MBEDTLS_MD_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD_C */
@@ -1696,7 +1696,7 @@
 #if defined(MBEDTLS_MD2_C)
     if( strcmp( "MBEDTLS_MD2_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD2_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD2_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD2_C */
@@ -1704,7 +1704,7 @@
 #if defined(MBEDTLS_MD4_C)
     if( strcmp( "MBEDTLS_MD4_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD4_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD4_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD4_C */
@@ -1712,7 +1712,7 @@
 #if defined(MBEDTLS_MD5_C)
     if( strcmp( "MBEDTLS_MD5_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MD5_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MD5_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MD5_C */
@@ -1720,7 +1720,7 @@
 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
     if( strcmp( "MBEDTLS_MEMORY_BUFFER_ALLOC_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MEMORY_BUFFER_ALLOC_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MEMORY_BUFFER_ALLOC_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MEMORY_BUFFER_ALLOC_C */
@@ -1728,7 +1728,7 @@
 #if defined(MBEDTLS_NET_C)
     if( strcmp( "MBEDTLS_NET_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_NET_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_NET_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_NET_C */
@@ -1736,7 +1736,7 @@
 #if defined(MBEDTLS_OID_C)
     if( strcmp( "MBEDTLS_OID_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_OID_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_OID_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_OID_C */
@@ -1744,7 +1744,7 @@
 #if defined(MBEDTLS_PADLOCK_C)
     if( strcmp( "MBEDTLS_PADLOCK_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PADLOCK_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PADLOCK_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PADLOCK_C */
@@ -1752,7 +1752,7 @@
 #if defined(MBEDTLS_PEM_PARSE_C)
     if( strcmp( "MBEDTLS_PEM_PARSE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PEM_PARSE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PEM_PARSE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PEM_PARSE_C */
@@ -1760,7 +1760,7 @@
 #if defined(MBEDTLS_PEM_WRITE_C)
     if( strcmp( "MBEDTLS_PEM_WRITE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PEM_WRITE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PEM_WRITE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PEM_WRITE_C */
@@ -1768,7 +1768,7 @@
 #if defined(MBEDTLS_PK_C)
     if( strcmp( "MBEDTLS_PK_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PK_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PK_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PK_C */
@@ -1776,7 +1776,7 @@
 #if defined(MBEDTLS_PK_PARSE_C)
     if( strcmp( "MBEDTLS_PK_PARSE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PK_PARSE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PK_PARSE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PK_PARSE_C */
@@ -1784,7 +1784,7 @@
 #if defined(MBEDTLS_PK_WRITE_C)
     if( strcmp( "MBEDTLS_PK_WRITE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PK_WRITE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PK_WRITE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PK_WRITE_C */
@@ -1792,7 +1792,7 @@
 #if defined(MBEDTLS_PKCS5_C)
     if( strcmp( "MBEDTLS_PKCS5_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS5_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS5_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PKCS5_C */
@@ -1800,7 +1800,7 @@
 #if defined(MBEDTLS_PKCS11_C)
     if( strcmp( "MBEDTLS_PKCS11_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS11_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS11_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PKCS11_C */
@@ -1808,7 +1808,7 @@
 #if defined(MBEDTLS_PKCS12_C)
     if( strcmp( "MBEDTLS_PKCS12_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS12_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PKCS12_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PKCS12_C */
@@ -1816,7 +1816,7 @@
 #if defined(MBEDTLS_PLATFORM_C)
     if( strcmp( "MBEDTLS_PLATFORM_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_C */
@@ -1824,7 +1824,7 @@
 #if defined(MBEDTLS_POLY1305_C)
     if( strcmp( "MBEDTLS_POLY1305_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_POLY1305_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_POLY1305_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_POLY1305_C */
@@ -1832,7 +1832,7 @@
 #if defined(MBEDTLS_RIPEMD160_C)
     if( strcmp( "MBEDTLS_RIPEMD160_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_RIPEMD160_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_RIPEMD160_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_RIPEMD160_C */
@@ -1840,7 +1840,7 @@
 #if defined(MBEDTLS_RSA_C)
     if( strcmp( "MBEDTLS_RSA_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_RSA_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_RSA_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_RSA_C */
@@ -1848,7 +1848,7 @@
 #if defined(MBEDTLS_SHA1_C)
     if( strcmp( "MBEDTLS_SHA1_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA1_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA1_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA1_C */
@@ -1856,7 +1856,7 @@
 #if defined(MBEDTLS_SHA256_C)
     if( strcmp( "MBEDTLS_SHA256_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA256_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA256_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA256_C */
@@ -1864,7 +1864,7 @@
 #if defined(MBEDTLS_SHA512_C)
     if( strcmp( "MBEDTLS_SHA512_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SHA512_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SHA512_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SHA512_C */
@@ -1872,7 +1872,7 @@
 #if defined(MBEDTLS_SSL_CACHE_C)
     if( strcmp( "MBEDTLS_SSL_CACHE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CACHE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CACHE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_CACHE_C */
@@ -1880,7 +1880,7 @@
 #if defined(MBEDTLS_SSL_COOKIE_C)
     if( strcmp( "MBEDTLS_SSL_COOKIE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_COOKIE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_COOKIE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_COOKIE_C */
@@ -1888,7 +1888,7 @@
 #if defined(MBEDTLS_SSL_TICKET_C)
     if( strcmp( "MBEDTLS_SSL_TICKET_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_TICKET_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_TICKET_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_TICKET_C */
@@ -1896,7 +1896,7 @@
 #if defined(MBEDTLS_SSL_CLI_C)
     if( strcmp( "MBEDTLS_SSL_CLI_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CLI_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CLI_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_CLI_C */
@@ -1904,7 +1904,7 @@
 #if defined(MBEDTLS_SSL_SRV_C)
     if( strcmp( "MBEDTLS_SSL_SRV_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SRV_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_SRV_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_SRV_C */
@@ -1912,7 +1912,7 @@
 #if defined(MBEDTLS_SSL_TLS_C)
     if( strcmp( "MBEDTLS_SSL_TLS_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_TLS_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_TLS_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_TLS_C */
@@ -1920,7 +1920,7 @@
 #if defined(MBEDTLS_THREADING_C)
     if( strcmp( "MBEDTLS_THREADING_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_THREADING_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_THREADING_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_THREADING_C */
@@ -1928,7 +1928,7 @@
 #if defined(MBEDTLS_TIMING_C)
     if( strcmp( "MBEDTLS_TIMING_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_TIMING_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_TIMING_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_TIMING_C */
@@ -1936,7 +1936,7 @@
 #if defined(MBEDTLS_VERSION_C)
     if( strcmp( "MBEDTLS_VERSION_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_VERSION_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_VERSION_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_VERSION_C */
@@ -1944,7 +1944,7 @@
 #if defined(MBEDTLS_X509_USE_C)
     if( strcmp( "MBEDTLS_X509_USE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_USE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_USE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_USE_C */
@@ -1952,7 +1952,7 @@
 #if defined(MBEDTLS_X509_CRT_PARSE_C)
     if( strcmp( "MBEDTLS_X509_CRT_PARSE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CRT_PARSE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CRT_PARSE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_CRT_PARSE_C */
@@ -1960,7 +1960,7 @@
 #if defined(MBEDTLS_X509_CRL_PARSE_C)
     if( strcmp( "MBEDTLS_X509_CRL_PARSE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CRL_PARSE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CRL_PARSE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_CRL_PARSE_C */
@@ -1968,7 +1968,7 @@
 #if defined(MBEDTLS_X509_CSR_PARSE_C)
     if( strcmp( "MBEDTLS_X509_CSR_PARSE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CSR_PARSE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CSR_PARSE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_CSR_PARSE_C */
@@ -1976,7 +1976,7 @@
 #if defined(MBEDTLS_X509_CREATE_C)
     if( strcmp( "MBEDTLS_X509_CREATE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CREATE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CREATE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_CREATE_C */
@@ -1984,7 +1984,7 @@
 #if defined(MBEDTLS_X509_CRT_WRITE_C)
     if( strcmp( "MBEDTLS_X509_CRT_WRITE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CRT_WRITE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CRT_WRITE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_CRT_WRITE_C */
@@ -1992,7 +1992,7 @@
 #if defined(MBEDTLS_X509_CSR_WRITE_C)
     if( strcmp( "MBEDTLS_X509_CSR_WRITE_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CSR_WRITE_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_CSR_WRITE_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_CSR_WRITE_C */
@@ -2000,7 +2000,7 @@
 #if defined(MBEDTLS_XTEA_C)
     if( strcmp( "MBEDTLS_XTEA_C", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_XTEA_C ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_XTEA_C ) );
         return( 0 );
     }
 #endif /* MBEDTLS_XTEA_C */
@@ -2008,7 +2008,7 @@
 #if defined(MBEDTLS_MPI_WINDOW_SIZE)
     if( strcmp( "MBEDTLS_MPI_WINDOW_SIZE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MPI_WINDOW_SIZE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MPI_WINDOW_SIZE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MPI_WINDOW_SIZE */
@@ -2016,7 +2016,7 @@
 #if defined(MBEDTLS_MPI_MAX_SIZE)
     if( strcmp( "MBEDTLS_MPI_MAX_SIZE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MPI_MAX_SIZE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MPI_MAX_SIZE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MPI_MAX_SIZE */
@@ -2024,7 +2024,7 @@
 #if defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN)
     if( strcmp( "MBEDTLS_CTR_DRBG_ENTROPY_LEN", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_ENTROPY_LEN ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_ENTROPY_LEN ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CTR_DRBG_ENTROPY_LEN */
@@ -2032,7 +2032,7 @@
 #if defined(MBEDTLS_CTR_DRBG_RESEED_INTERVAL)
     if( strcmp( "MBEDTLS_CTR_DRBG_RESEED_INTERVAL", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_RESEED_INTERVAL ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_RESEED_INTERVAL ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CTR_DRBG_RESEED_INTERVAL */
@@ -2040,7 +2040,7 @@
 #if defined(MBEDTLS_CTR_DRBG_MAX_INPUT)
     if( strcmp( "MBEDTLS_CTR_DRBG_MAX_INPUT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_MAX_INPUT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_MAX_INPUT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CTR_DRBG_MAX_INPUT */
@@ -2048,7 +2048,7 @@
 #if defined(MBEDTLS_CTR_DRBG_MAX_REQUEST)
     if( strcmp( "MBEDTLS_CTR_DRBG_MAX_REQUEST", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_MAX_REQUEST ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_MAX_REQUEST ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CTR_DRBG_MAX_REQUEST */
@@ -2056,7 +2056,7 @@
 #if defined(MBEDTLS_CTR_DRBG_MAX_SEED_INPUT)
     if( strcmp( "MBEDTLS_CTR_DRBG_MAX_SEED_INPUT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_MAX_SEED_INPUT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_CTR_DRBG_MAX_SEED_INPUT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_CTR_DRBG_MAX_SEED_INPUT */
@@ -2064,7 +2064,7 @@
 #if defined(MBEDTLS_HMAC_DRBG_RESEED_INTERVAL)
     if( strcmp( "MBEDTLS_HMAC_DRBG_RESEED_INTERVAL", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_RESEED_INTERVAL ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_RESEED_INTERVAL ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HMAC_DRBG_RESEED_INTERVAL */
@@ -2072,7 +2072,7 @@
 #if defined(MBEDTLS_HMAC_DRBG_MAX_INPUT)
     if( strcmp( "MBEDTLS_HMAC_DRBG_MAX_INPUT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_MAX_INPUT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_MAX_INPUT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HMAC_DRBG_MAX_INPUT */
@@ -2080,7 +2080,7 @@
 #if defined(MBEDTLS_HMAC_DRBG_MAX_REQUEST)
     if( strcmp( "MBEDTLS_HMAC_DRBG_MAX_REQUEST", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_MAX_REQUEST ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_MAX_REQUEST ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HMAC_DRBG_MAX_REQUEST */
@@ -2088,7 +2088,7 @@
 #if defined(MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT)
     if( strcmp( "MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT */
@@ -2096,7 +2096,7 @@
 #if defined(MBEDTLS_ECP_MAX_BITS)
     if( strcmp( "MBEDTLS_ECP_MAX_BITS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_MAX_BITS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_MAX_BITS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_MAX_BITS */
@@ -2104,7 +2104,7 @@
 #if defined(MBEDTLS_ECP_WINDOW_SIZE)
     if( strcmp( "MBEDTLS_ECP_WINDOW_SIZE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_WINDOW_SIZE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_WINDOW_SIZE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_WINDOW_SIZE */
@@ -2112,7 +2112,7 @@
 #if defined(MBEDTLS_ECP_FIXED_POINT_OPTIM)
     if( strcmp( "MBEDTLS_ECP_FIXED_POINT_OPTIM", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_FIXED_POINT_OPTIM ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ECP_FIXED_POINT_OPTIM ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ECP_FIXED_POINT_OPTIM */
@@ -2120,7 +2120,7 @@
 #if defined(MBEDTLS_ENTROPY_MAX_SOURCES)
     if( strcmp( "MBEDTLS_ENTROPY_MAX_SOURCES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_MAX_SOURCES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_MAX_SOURCES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ENTROPY_MAX_SOURCES */
@@ -2128,7 +2128,7 @@
 #if defined(MBEDTLS_ENTROPY_MAX_GATHER)
     if( strcmp( "MBEDTLS_ENTROPY_MAX_GATHER", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_MAX_GATHER ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_MAX_GATHER ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ENTROPY_MAX_GATHER */
@@ -2136,7 +2136,7 @@
 #if defined(MBEDTLS_ENTROPY_MIN_HARDWARE)
     if( strcmp( "MBEDTLS_ENTROPY_MIN_HARDWARE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_MIN_HARDWARE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_ENTROPY_MIN_HARDWARE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_ENTROPY_MIN_HARDWARE */
@@ -2144,7 +2144,7 @@
 #if defined(MBEDTLS_MEMORY_ALIGN_MULTIPLE)
     if( strcmp( "MBEDTLS_MEMORY_ALIGN_MULTIPLE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_MEMORY_ALIGN_MULTIPLE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_MEMORY_ALIGN_MULTIPLE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_MEMORY_ALIGN_MULTIPLE */
@@ -2152,7 +2152,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
     if( strcmp( "MBEDTLS_PLATFORM_STD_MEM_HDR", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_MEM_HDR ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_MEM_HDR ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_MEM_HDR */
@@ -2160,7 +2160,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_CALLOC)
     if( strcmp( "MBEDTLS_PLATFORM_STD_CALLOC", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_CALLOC ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_CALLOC ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_CALLOC */
@@ -2168,7 +2168,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_FREE)
     if( strcmp( "MBEDTLS_PLATFORM_STD_FREE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_FREE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_FREE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_FREE */
@@ -2176,7 +2176,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_EXIT)
     if( strcmp( "MBEDTLS_PLATFORM_STD_EXIT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_EXIT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_EXIT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_EXIT */
@@ -2184,7 +2184,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_TIME)
     if( strcmp( "MBEDTLS_PLATFORM_STD_TIME", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_TIME ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_TIME ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_TIME */
@@ -2192,7 +2192,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_FPRINTF)
     if( strcmp( "MBEDTLS_PLATFORM_STD_FPRINTF", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_FPRINTF ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_FPRINTF ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_FPRINTF */
@@ -2200,7 +2200,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_PRINTF)
     if( strcmp( "MBEDTLS_PLATFORM_STD_PRINTF", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_PRINTF ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_PRINTF ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_PRINTF */
@@ -2208,7 +2208,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
     if( strcmp( "MBEDTLS_PLATFORM_STD_SNPRINTF", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_SNPRINTF ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_SNPRINTF ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_SNPRINTF */
@@ -2216,7 +2216,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
     if( strcmp( "MBEDTLS_PLATFORM_STD_EXIT_SUCCESS", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_EXIT_SUCCESS ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_EXIT_SUCCESS ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_EXIT_SUCCESS */
@@ -2224,7 +2224,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
     if( strcmp( "MBEDTLS_PLATFORM_STD_EXIT_FAILURE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_EXIT_FAILURE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_EXIT_FAILURE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_EXIT_FAILURE */
@@ -2232,7 +2232,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
     if( strcmp( "MBEDTLS_PLATFORM_STD_NV_SEED_READ", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_NV_SEED_READ ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_NV_SEED_READ ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_NV_SEED_READ */
@@ -2240,7 +2240,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
     if( strcmp( "MBEDTLS_PLATFORM_STD_NV_SEED_WRITE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_NV_SEED_WRITE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_NV_SEED_WRITE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_NV_SEED_WRITE */
@@ -2248,7 +2248,7 @@
 #if defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
     if( strcmp( "MBEDTLS_PLATFORM_STD_NV_SEED_FILE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_NV_SEED_FILE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_STD_NV_SEED_FILE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_STD_NV_SEED_FILE */
@@ -2256,7 +2256,7 @@
 #if defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_CALLOC_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_CALLOC_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_CALLOC_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_CALLOC_MACRO */
@@ -2264,7 +2264,7 @@
 #if defined(MBEDTLS_PLATFORM_FREE_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_FREE_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_FREE_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_FREE_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_FREE_MACRO */
@@ -2272,7 +2272,7 @@
 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_EXIT_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_EXIT_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_EXIT_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_EXIT_MACRO */
@@ -2280,7 +2280,7 @@
 #if defined(MBEDTLS_PLATFORM_TIME_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_TIME_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_TIME_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_TIME_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_TIME_MACRO */
@@ -2288,7 +2288,7 @@
 #if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_TIME_TYPE_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_TIME_TYPE_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_TIME_TYPE_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_TIME_TYPE_MACRO */
@@ -2296,7 +2296,7 @@
 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_FPRINTF_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_FPRINTF_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_FPRINTF_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_FPRINTF_MACRO */
@@ -2304,7 +2304,7 @@
 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_PRINTF_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_PRINTF_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_PRINTF_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_PRINTF_MACRO */
@@ -2312,7 +2312,7 @@
 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_SNPRINTF_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_SNPRINTF_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_SNPRINTF_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_SNPRINTF_MACRO */
@@ -2320,7 +2320,7 @@
 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_NV_SEED_READ_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_NV_SEED_READ_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_NV_SEED_READ_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_NV_SEED_READ_MACRO */
@@ -2328,7 +2328,7 @@
 #if defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
     if( strcmp( "MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO */
@@ -2336,7 +2336,7 @@
 #if defined(MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT)
     if( strcmp( "MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT */
@@ -2344,7 +2344,7 @@
 #if defined(MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES)
     if( strcmp( "MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES */
@@ -2352,7 +2352,7 @@
 #if defined(MBEDTLS_SSL_MAX_CONTENT_LEN)
     if( strcmp( "MBEDTLS_SSL_MAX_CONTENT_LEN", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_MAX_CONTENT_LEN ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_MAX_CONTENT_LEN ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_MAX_CONTENT_LEN */
@@ -2360,7 +2360,7 @@
 #if defined(MBEDTLS_SSL_IN_CONTENT_LEN)
     if( strcmp( "MBEDTLS_SSL_IN_CONTENT_LEN", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_IN_CONTENT_LEN ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_IN_CONTENT_LEN ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_IN_CONTENT_LEN */
@@ -2368,7 +2368,7 @@
 #if defined(MBEDTLS_SSL_OUT_CONTENT_LEN)
     if( strcmp( "MBEDTLS_SSL_OUT_CONTENT_LEN", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_OUT_CONTENT_LEN ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_OUT_CONTENT_LEN ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_OUT_CONTENT_LEN */
@@ -2376,7 +2376,7 @@
 #if defined(MBEDTLS_SSL_DTLS_MAX_BUFFERING)
     if( strcmp( "MBEDTLS_SSL_DTLS_MAX_BUFFERING", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_MAX_BUFFERING ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DTLS_MAX_BUFFERING ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_DTLS_MAX_BUFFERING */
@@ -2384,7 +2384,7 @@
 #if defined(MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME)
     if( strcmp( "MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME */
@@ -2392,7 +2392,7 @@
 #if defined(MBEDTLS_PSK_MAX_LEN)
     if( strcmp( "MBEDTLS_PSK_MAX_LEN", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PSK_MAX_LEN ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PSK_MAX_LEN ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PSK_MAX_LEN */
@@ -2400,7 +2400,7 @@
 #if defined(MBEDTLS_SSL_COOKIE_TIMEOUT)
     if( strcmp( "MBEDTLS_SSL_COOKIE_TIMEOUT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_COOKIE_TIMEOUT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_COOKIE_TIMEOUT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_COOKIE_TIMEOUT */
@@ -2408,7 +2408,7 @@
 #if defined(MBEDTLS_SSL_CIPHERSUITES)
     if( strcmp( "MBEDTLS_SSL_CIPHERSUITES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CIPHERSUITES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CIPHERSUITES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_SSL_CIPHERSUITES */
@@ -2416,7 +2416,7 @@
 #if defined(MBEDTLS_X509_MAX_INTERMEDIATE_CA)
     if( strcmp( "MBEDTLS_X509_MAX_INTERMEDIATE_CA", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_MAX_INTERMEDIATE_CA ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_MAX_INTERMEDIATE_CA ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_MAX_INTERMEDIATE_CA */
@@ -2424,7 +2424,7 @@
 #if defined(MBEDTLS_X509_MAX_FILE_PATH_LEN)
     if( strcmp( "MBEDTLS_X509_MAX_FILE_PATH_LEN", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_X509_MAX_FILE_PATH_LEN ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_X509_MAX_FILE_PATH_LEN ) );
         return( 0 );
     }
 #endif /* MBEDTLS_X509_MAX_FILE_PATH_LEN */
@@ -2432,7 +2432,7 @@
 #if defined(MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES)
     if( strcmp( "MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES ) );
         return( 0 );
     }
 #endif /* MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES */
@@ -2440,7 +2440,7 @@
 #if defined(MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE)
     if( strcmp( "MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE ) );
         return( 0 );
     }
 #endif /* MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE */
@@ -2448,7 +2448,7 @@
 #if defined(MBEDTLS_PLATFORM_ZEROIZE_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_ZEROIZE_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_ZEROIZE_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_ZEROIZE_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_ZEROIZE_ALT */
@@ -2456,7 +2456,7 @@
 #if defined(MBEDTLS_PLATFORM_GMTIME_R_ALT)
     if( strcmp( "MBEDTLS_PLATFORM_GMTIME_R_ALT", config ) == 0 )
     {
-        mbedtls_printf( MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_GMTIME_R_ALT ) );
+        mbedtls_printf( "%s", MACRO_EXPANSION_TO_STR( MBEDTLS_PLATFORM_GMTIME_R_ALT ) );
         return( 0 );
     }
 #endif /* MBEDTLS_PLATFORM_GMTIME_R_ALT */
