@@ -279,8 +279,14 @@ void WOLFSSL_TIME(int count)
279279#include <wolfssl/wolfcrypt/mem_track.h>
280280#endif
281281
282- static void wolfssl_log (const int logLevel , const char * const logMessage )
283- {
282+ static void wolfssl_log (
283+ const int logLevel ,
284+ const char * file_name ,
285+ int line_number ,
286+ const char * const logMessage )
287+ {
288+ (void )file_name ;
289+ (void )line_number ;
284290 if (log_function )
285291 log_function (logLevel , logMessage );
286292 else {
@@ -289,46 +295,103 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
289295#elif defined(ARDUINO )
290296 wolfSSL_Arduino_Serial_Print (logMessage );
291297#elif defined(WOLFSSL_LOG_PRINTF )
292- printf ("%s\n" , logMessage );
298+ if (file_name != NULL )
299+ printf ("[%s L %d] %s\n" , file_name , line_number , logMessage );
300+ else
301+ printf ("%s\n" , logMessage );
293302#elif defined(THREADX ) && !defined(THREADX_NO_DC_PRINTF )
294- dc_log_printf ("%s\n" , logMessage );
303+ if (file_name != NULL )
304+ dc_log_printf ("[%s L %d] %s\n" , file_name , line_number , logMessage );
305+ else
306+ dc_log_printf ("%s\n" , logMessage );
295307#elif defined(WOLFSSL_DEOS )
296- printf ("%s\r\n" , logMessage );
308+ if (file_name != NULL )
309+ printf ("[%s L %d] %s\r\n" , file_name , line_number , logMessage );
310+ else
311+ printf ("%s\r\n" , logMessage );
297312#elif defined(MICRIUM )
298- BSP_Ser_Printf ("%s\r\n" , logMessage );
313+ if (file_name != NULL )
314+ BSP_Ser_Printf ("[%s L %d] %s\r\n" ,
315+ file_name , line_number , logMessage );
316+ else
317+ BSP_Ser_Printf ("%s\r\n" , logMessage );
299318#elif defined(WOLFSSL_MDK_ARM )
300319 fflush (stdout ) ;
301- printf ("%s\n" , logMessage );
320+ if (file_name != NULL )
321+ printf ("[%s L %d] %s\n" , file_name , line_number , logMessage );
322+ else
323+ printf ("%s\n" , logMessage );
302324 fflush (stdout ) ;
303325#elif defined(WOLFSSL_UTASKER )
304326 fnDebugMsg ((char * )logMessage );
305327 fnDebugMsg ("\r\n" );
306328#elif defined(MQX_USE_IO_OLD )
307- fprintf (_mqxio_stderr , "%s\n" , logMessage );
329+ if (file_name != NULL )
330+ fprintf (_mqxio_stderr , "[%s L %d] %s\n" ,
331+ file_name , line_number , logMessage );
332+ else
333+ fprintf (_mqxio_stderr , "%s\n" , logMessage );
308334#elif defined(WOLFSSL_APACHE_MYNEWT )
309- LOG_DEBUG (& mynewt_log , LOG_MODULE_DEFAULT , "%s\n" , logMessage );
335+ if (file_name != NULL )
336+ LOG_DEBUG (& mynewt_log , LOG_MODULE_DEFAULT , "[%s L %d] %s\n" ,
337+ file_name , line_number , logMessage );
338+ else
339+ LOG_DEBUG (& mynewt_log , LOG_MODULE_DEFAULT , "%s\n" , logMessage );
310340#elif defined(WOLFSSL_ESPIDF )
311- ESP_LOGI ("wolfssl" , "%s" , logMessage );
341+ if (file_name != NULL )
342+ ESP_LOGI ("wolfssl" , "[%s L %d] %s" ,
343+ file_name , line_number , logMessage );
344+ else
345+ ESP_LOGI ("wolfssl" , "%s" , logMessage );
312346#elif defined(WOLFSSL_ZEPHYR )
313- printk ("%s\n" , logMessage );
347+ if (file_name != NULL )
348+ printk ("[%s L %d] %s\n" , file_name , line_number , logMessage );
349+ else
350+ printk ("%s\n" , logMessage );
314351#elif defined(WOLFSSL_TELIT_M2MB )
315- M2M_LOG_INFO ("%s\n" , logMessage );
352+ if (file_name != NULL )
353+ M2M_LOG_INFO ("[%s L %d] %s\n" , file_name , line_number , logMessage );
354+ else
355+ M2M_LOG_INFO ("%s\n" , logMessage );
316356#elif defined(WOLFSSL_ANDROID_DEBUG )
317- __android_log_print (ANDROID_LOG_VERBOSE , "[wolfSSL]" , "%s" , logMessage );
357+ if (file_name != NULL )
358+ __android_log_print (ANDROID_LOG_VERBOSE , "[wolfSSL]" , "[%s L %d] %s" ,
359+ file_name , line_number , logMessage );
360+ else
361+ __android_log_print (ANDROID_LOG_VERBOSE , "[wolfSSL]" , "%s" ,
362+ logMessage );
318363#elif defined(WOLFSSL_XILINX )
319- xil_printf ("%s\r\n" , logMessage );
364+ if (file_name != NULL )
365+ xil_printf ("[%s L %d] %s\r\n" , file_name , line_number , logMessage );
366+ else
367+ xil_printf ("%s\r\n" , logMessage );
320368#elif defined(WOLFSSL_LINUXKM )
321- printk ("%s\n" , logMessage );
369+ if (file_name != NULL )
370+ printk ("[%s L %d] %s\n" , file_name , line_number , logMessage );
371+ else
372+ printk ("%s\n" , logMessage );
322373#elif defined(WOLFSSL_RENESAS_RA6M4 )
323- myprintf ("%s\n" , logMessage );
374+ if (file_name != NULL )
375+ myprintf ("[%s L %d] %s\n" , file_name , line_number , logMessage );
376+ else
377+ myprintf ("%s\n" , logMessage );
324378#elif defined(STACK_SIZE_CHECKPOINT_MSG ) && \
325379 defined(HAVE_STACK_SIZE_VERBOSE ) && defined(HAVE_STACK_SIZE_VERBOSE_LOG )
326380 STACK_SIZE_CHECKPOINT_MSG (logMessage );
327381#else
328- if (log_prefix != NULL )
329- fprintf (stderr , "[%s]: %s\n" , log_prefix , logMessage );
330- else
331- fprintf (stderr , "%s\n" , logMessage );
382+ if (log_prefix != NULL ) {
383+ if (file_name != NULL )
384+ fprintf (stderr , "[%s]: [%s L %d] %s\n" ,
385+ log_prefix , file_name , line_number , logMessage );
386+ else
387+ fprintf (stderr , "[%s]: %s\n" , log_prefix , logMessage );
388+ } else {
389+ if (file_name != NULL )
390+ fprintf (stderr , "[%s L %d] %s\n" ,
391+ file_name , line_number , logMessage );
392+ else
393+ fprintf (stderr , "%s\n" , logMessage );
394+ }
332395#endif
333396 }
334397}
@@ -340,6 +403,7 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
340403#ifndef WOLFSSL_MSG_EX_BUF_SZ
341404#define WOLFSSL_MSG_EX_BUF_SZ 100
342405#endif
406+ #undef WOLFSSL_MSG_EX /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
343407#ifdef __clang__
344408/* tell clang argument 1 is format */
345409__attribute__((__format__ (__printf__ , 1 , 0 )))
@@ -354,16 +418,42 @@ void WOLFSSL_MSG_EX(const char* fmt, ...)
354418 written = XVSNPRINTF (msg , sizeof (msg ), fmt , args );
355419 va_end (args );
356420 if (written > 0 )
357- wolfssl_log (INFO_LOG , msg );
421+ wolfssl_log (INFO_LOG , NULL , 0 , msg );
422+ }
423+ }
424+
425+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
426+ void WOLFSSL_MSG_EX2 (const char * file , int line , const char * fmt , ...)
427+ {
428+ if (loggingEnabled ) {
429+ char msg [WOLFSSL_MSG_EX_BUF_SZ ];
430+ int written ;
431+ va_list args ;
432+ va_start (args , fmt );
433+ written = XVSNPRINTF (msg , sizeof (msg ), fmt , args );
434+ va_end (args );
435+ if (written > 0 )
436+ wolfssl_log (INFO_LOG , file , line , msg );
358437 }
359438}
360439#endif
361440
441+ #endif
442+
443+ #undef WOLFSSL_MSG /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
362444void WOLFSSL_MSG (const char * msg )
363445{
364446 if (loggingEnabled )
365- wolfssl_log (INFO_LOG , msg );
447+ wolfssl_log (INFO_LOG , NULL , 0 , msg );
448+ }
449+
450+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
451+ void WOLFSSL_MSG2 (const char * file , int line , const char * msg )
452+ {
453+ if (loggingEnabled )
454+ wolfssl_log (INFO_LOG , file , line , msg );
366455}
456+ #endif
367457
368458#ifndef LINE_LEN
369459#define LINE_LEN 16
@@ -378,7 +468,7 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
378468 }
379469
380470 if (!buffer ) {
381- wolfssl_log (INFO_LOG , "\tNULL" );
471+ wolfssl_log (INFO_LOG , NULL , 0 , "\tNULL" );
382472 return ;
383473 }
384474
@@ -408,32 +498,66 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
408498 }
409499 }
410500
411- wolfssl_log (INFO_LOG , line );
501+ wolfssl_log (INFO_LOG , NULL , 0 , line );
412502 buffer += LINE_LEN ;
413503 buflen -= LINE_LEN ;
414504 }
415505}
416506
417-
507+ #undef WOLFSSL_ENTER /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
418508void WOLFSSL_ENTER (const char * msg )
419509{
420510 if (loggingEnabled ) {
421511 char buffer [WOLFSSL_MAX_ERROR_SZ ];
422512 XSNPRINTF (buffer , sizeof (buffer ), "wolfSSL Entering %s" , msg );
423- wolfssl_log (ENTER_LOG , buffer );
513+ wolfssl_log (ENTER_LOG , NULL , 0 , buffer );
424514 }
425515}
426516
517+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
518+ void WOLFSSL_ENTER2 (const char * file , int line , const char * msg )
519+ {
520+ if (loggingEnabled ) {
521+ char buffer [WOLFSSL_MAX_ERROR_SZ ];
522+ XSNPRINTF (buffer , sizeof (buffer ), "wolfSSL Entering %s" , msg );
523+ wolfssl_log (ENTER_LOG , file , line , buffer );
524+ }
525+ }
526+ #endif
427527
528+ #undef WOLFSSL_LEAVE /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
428529void WOLFSSL_LEAVE (const char * msg , int ret )
429530{
430531 if (loggingEnabled ) {
431532 char buffer [WOLFSSL_MAX_ERROR_SZ ];
432533 XSNPRINTF (buffer , sizeof (buffer ), "wolfSSL Leaving %s, return %d" ,
433534 msg , ret );
434- wolfssl_log (LEAVE_LOG , buffer );
535+ wolfssl_log (LEAVE_LOG , NULL , 0 , buffer );
536+ }
537+ }
538+
539+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
540+ void WOLFSSL_LEAVE2 (const char * file , int line , const char * msg , int ret )
541+ {
542+ if (loggingEnabled ) {
543+ char buffer [WOLFSSL_MAX_ERROR_SZ ];
544+ XSNPRINTF (buffer , sizeof (buffer ), "wolfSSL Leaving %s, return %d" ,
545+ msg , ret );
546+ wolfssl_log (LEAVE_LOG , file , line , buffer );
435547 }
436548}
549+ #endif
550+
551+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
552+ /* restore the wrappers */
553+ #define WOLFSSL_MSG (msg ) WOLFSSL_MSG2(__FILE__, __LINE__, msg)
554+ #define WOLFSSL_ENTER (msg ) WOLFSSL_ENTER2(__FILE__, __LINE__, msg)
555+ #define WOLFSSL_LEAVE (msg , ret ) WOLFSSL_LEAVE2(__FILE__, __LINE__, msg, ret)
556+ #ifdef XVSNPRINTF
557+ #define WOLFSSL_MSG_EX (fmt , args ...) \
558+ WOLFSSL_MSG_EX2(__FILE__, __LINE__, fmt, ## args)
559+ #endif
560+ #endif
437561
438562WOLFSSL_API int WOLFSSL_IS_DEBUG_ON (void )
439563{
@@ -1537,7 +1661,7 @@ void WOLFSSL_ERROR(int error)
15371661
15381662 #ifdef DEBUG_WOLFSSL
15391663 if (loggingEnabled )
1540- wolfssl_log (ERROR_LOG , buffer );
1664+ wolfssl_log (ERROR_LOG , NULL , 0 , buffer );
15411665 #endif
15421666 }
15431667}
@@ -1546,7 +1670,7 @@ void WOLFSSL_ERROR_MSG(const char* msg)
15461670{
15471671#ifdef DEBUG_WOLFSSL
15481672 if (loggingEnabled )
1549- wolfssl_log (ERROR_LOG , msg );
1673+ wolfssl_log (ERROR_LOG , NULL , 0 , msg );
15501674#else
15511675 (void )msg ;
15521676#endif
0 commit comments