mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-04 04:32:24 -05:00 
			
		
		
		
	Rework debug to not need dynamic alloc
But introduces dependency on variadic macros
This commit is contained in:
		
							parent
							
								
									a7c8903ca6
								
							
						
					
					
						commit
						b74c245a20
					
				@ -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 @@ extern "C" {
 | 
			
		||||
 */
 | 
			
		||||
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,
 | 
			
		||||
 | 
			
		||||
@ -52,35 +52,35 @@ void mbedtls_debug_set_threshold( int threshold )
 | 
			
		||||
    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];
 | 
			
		||||
 | 
			
		||||
@ -59,8 +59,8 @@ void debug_print_msg_threshold( int threshold, int level, char *file, int line,
 | 
			
		||||
    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 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user