diff --git a/include/mbedtls/debug.h b/include/mbedtls/debug.h
index 618a68c..bbbc2e8 100644
--- a/include/mbedtls/debug.h
+++ b/include/mbedtls/debug.h
@@ -38,8 +38,11 @@
 
 #if defined(MBEDTLS_DEBUG_C)
 
+#define MBEDTLS_DEBUG_STRIP_PARENS( ... )   __VA_ARGS__
+
 #define MBEDTLS_SSL_DEBUG_MSG( level, args )                    \
-    mbedtls_debug_print_msg_free( ssl, level, __FILE__, __LINE__, mbedtls_debug_fmt args )
+    mbedtls_debug_print_fmt( ssl, level, __FILE__, __LINE__,    \
+                             MBEDTLS_DEBUG_STRIP_PARENS args )
 
 #define MBEDTLS_SSL_DEBUG_RET( level, text, ret )                \
     mbedtls_debug_print_ret( ssl, level, __FILE__, __LINE__, text, ret )
@@ -86,13 +89,9 @@
  */
 void mbedtls_debug_set_threshold( int threshold );
 
-char *mbedtls_debug_fmt( const char *format, ... );
-
-void mbedtls_debug_print_msg( const mbedtls_ssl_context *ssl, int level,
-                      const char *file, int line, const char *text );
-
-void mbedtls_debug_print_msg_free( const mbedtls_ssl_context *ssl, int level,
-                      const char *file, int line, char *text );
+void mbedtls_debug_print_fmt( const mbedtls_ssl_context *ssl, int level,
+                              const char *file, int line,
+                              const char *format, ... );
 
 void mbedtls_debug_print_ret( const mbedtls_ssl_context *ssl, int level,
                       const char *file, int line,
diff --git a/library/debug.c b/library/debug.c
index 1660978..11076ea 100644
--- a/library/debug.c
+++ b/library/debug.c
@@ -52,35 +52,35 @@
     debug_threshold = threshold;
 }
 
-char *mbedtls_debug_fmt( const char *format, ... )
+void mbedtls_debug_print_fmt( const mbedtls_ssl_context *ssl, int level,
+                              const char *file, int line,
+                              const char *format, ... )
 {
     va_list argp;
-    char *str = mbedtls_calloc( DEBUG_BUF_SIZE, 1 );
+    char str[DEBUG_BUF_SIZE];
+    int ret;
 
-    if( str == NULL )
-        return( NULL );
+    if( ssl->conf == NULL || ssl->conf->f_dbg == NULL || level > debug_threshold )
+        return;
 
     va_start( argp, format );
 #if defined(_WIN32)
-    _vsnprintf_s( str, DEBUG_BUF_SIZE, _TRUNCATE, format, argp );
+    ret = _vsnprintf_s( str, DEBUG_BUF_SIZE, _TRUNCATE, format, argp );
 #else
-    vsnprintf( str, DEBUG_BUF_SIZE, format, argp );
+    ret = vsnprintf( str, DEBUG_BUF_SIZE, format, argp );
 #endif
     va_end( argp );
 
-    return( str );
+    if( ret >= 0 && ret < DEBUG_BUF_SIZE - 1 )
+    {
+        str[ret]     = '\n';
+        str[ret + 1] = '\0';
+    }
+
+    ssl->conf->f_dbg( ssl->conf->p_dbg, level, file, line, str );
 }
 
-void mbedtls_debug_print_msg_free( const mbedtls_ssl_context *ssl, int level,
-                      const char *file, int line, char *text )
-{
-    if( text != NULL )
-        mbedtls_debug_print_msg( ssl, level, file, line, text );
-
-    mbedtls_free( text );
-}
-
-void mbedtls_debug_print_msg( const mbedtls_ssl_context *ssl, int level,
+static void mbedtls_debug_print_msg( const mbedtls_ssl_context *ssl, int level,
                       const char *file, int line, const char *text )
 {
     char str[DEBUG_BUF_SIZE];
diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function
index 3cf6c9f..9cfd684 100644
--- a/tests/suites/test_suite_debug.function
+++ b/tests/suites/test_suite_debug.function
@@ -59,8 +59,8 @@
     mbedtls_debug_set_threshold( threshold );
     mbedtls_ssl_conf_dbg( &conf, string_debug, &buffer);
 
-    mbedtls_debug_print_msg_free( &ssl, level, file, line,
-                     mbedtls_debug_fmt("Text message, 2 == %d", 2 ) );
+    mbedtls_debug_print_fmt( &ssl, level, file, line,
+                             "Text message, 2 == %d", 2 );
 
     TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 );
 
