Skip to content

Commit 1eea372

Browse files
authored
Merge pull request #7647 from douzzer/20240614-WOLFSSL_MSG-code-points
20240614-WOLFSSL_MSG-code-points
2 parents c91d306 + 187dbd9 commit 1eea372

3 files changed

Lines changed: 179 additions & 28 deletions

File tree

configure.ac

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,17 @@ AS_IF([test "$ax_enable_debug" = "yes"],
200200
[AM_CCASFLAGS="$DEBUG_CFLAGS $AM_CCASFLAGS"],
201201
[AM_CCASFLAGS="$AM_CCASFLAGS -DNDEBUG"])
202202

203+
AC_ARG_ENABLE([debug-code-points],
204+
[ AS_HELP_STRING([--enable-debug-code-points],[Include source file and line number in --enable-verbose messages.]) ],
205+
[ ENABLED_DEBUG_CODEPOINTS=$enableval ],
206+
[ ENABLED_DEBUG_CODEPOINTS=no ]
207+
)
208+
209+
if test "$ENABLED_DEBUG_CODEPOINTS" = "yes"
210+
then
211+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_DEBUG_CODEPOINTS"
212+
fi
213+
203214
AC_ARG_ENABLE([debug-trace-errcodes],
204215
[ AS_HELP_STRING([--enable-debug-trace-errcodes],[Print trace messages when library errors are thrown.]) ],
205216
[ ENABLED_DEBUG_TRACE_ERRCODES=$enableval ],

wolfcrypt/src/logging.c

Lines changed: 149 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,11 @@ 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)
282+
static void wolfssl_log(const int logLevel, const char* const file_name,
283+
int line_number, const char* const logMessage)
283284
{
285+
(void)file_name;
286+
(void)line_number;
284287
if (log_function)
285288
log_function(logLevel, logMessage);
286289
else {
@@ -289,46 +292,103 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
289292
#elif defined(ARDUINO)
290293
wolfSSL_Arduino_Serial_Print(logMessage);
291294
#elif defined(WOLFSSL_LOG_PRINTF)
292-
printf("%s\n", logMessage);
295+
if (file_name != NULL)
296+
printf("[%s L %d] %s\n", file_name, line_number, logMessage);
297+
else
298+
printf("%s\n", logMessage);
293299
#elif defined(THREADX) && !defined(THREADX_NO_DC_PRINTF)
294-
dc_log_printf("%s\n", logMessage);
300+
if (file_name != NULL)
301+
dc_log_printf("[%s L %d] %s\n", file_name, line_number, logMessage);
302+
else
303+
dc_log_printf("%s\n", logMessage);
295304
#elif defined(WOLFSSL_DEOS)
296-
printf("%s\r\n", logMessage);
305+
if (file_name != NULL)
306+
printf("[%s L %d] %s\r\n", file_name, line_number, logMessage);
307+
else
308+
printf("%s\r\n", logMessage);
297309
#elif defined(MICRIUM)
298-
BSP_Ser_Printf("%s\r\n", logMessage);
310+
if (file_name != NULL)
311+
BSP_Ser_Printf("[%s L %d] %s\r\n",
312+
file_name, line_number, logMessage);
313+
else
314+
BSP_Ser_Printf("%s\r\n", logMessage);
299315
#elif defined(WOLFSSL_MDK_ARM)
300316
fflush(stdout) ;
301-
printf("%s\n", logMessage);
317+
if (file_name != NULL)
318+
printf("[%s L %d] %s\n", file_name, line_number, logMessage);
319+
else
320+
printf("%s\n", logMessage);
302321
fflush(stdout) ;
303322
#elif defined(WOLFSSL_UTASKER)
304323
fnDebugMsg((char*)logMessage);
305324
fnDebugMsg("\r\n");
306325
#elif defined(MQX_USE_IO_OLD)
307-
fprintf(_mqxio_stderr, "%s\n", logMessage);
326+
if (file_name != NULL)
327+
fprintf(_mqxio_stderr, "[%s L %d] %s\n",
328+
file_name, line_number, logMessage);
329+
else
330+
fprintf(_mqxio_stderr, "%s\n", logMessage);
308331
#elif defined(WOLFSSL_APACHE_MYNEWT)
309-
LOG_DEBUG(&mynewt_log, LOG_MODULE_DEFAULT, "%s\n", logMessage);
332+
if (file_name != NULL)
333+
LOG_DEBUG(&mynewt_log, LOG_MODULE_DEFAULT, "[%s L %d] %s\n",
334+
file_name, line_number, logMessage);
335+
else
336+
LOG_DEBUG(&mynewt_log, LOG_MODULE_DEFAULT, "%s\n", logMessage);
310337
#elif defined(WOLFSSL_ESPIDF)
311-
ESP_LOGI("wolfssl", "%s", logMessage);
338+
if (file_name != NULL)
339+
ESP_LOGI("wolfssl", "[%s L %d] %s",
340+
file_name, line_number, logMessage);
341+
else
342+
ESP_LOGI("wolfssl", "%s", logMessage);
312343
#elif defined(WOLFSSL_ZEPHYR)
313-
printk("%s\n", logMessage);
344+
if (file_name != NULL)
345+
printk("[%s L %d] %s\n", file_name, line_number, logMessage);
346+
else
347+
printk("%s\n", logMessage);
314348
#elif defined(WOLFSSL_TELIT_M2MB)
315-
M2M_LOG_INFO("%s\n", logMessage);
349+
if (file_name != NULL)
350+
M2M_LOG_INFO("[%s L %d] %s\n", file_name, line_number, logMessage);
351+
else
352+
M2M_LOG_INFO("%s\n", logMessage);
316353
#elif defined(WOLFSSL_ANDROID_DEBUG)
317-
__android_log_print(ANDROID_LOG_VERBOSE, "[wolfSSL]", "%s", logMessage);
354+
if (file_name != NULL)
355+
__android_log_print(ANDROID_LOG_VERBOSE, "[wolfSSL]", "[%s L %d] %s",
356+
file_name, line_number, logMessage);
357+
else
358+
__android_log_print(ANDROID_LOG_VERBOSE, "[wolfSSL]", "%s",
359+
logMessage);
318360
#elif defined(WOLFSSL_XILINX)
319-
xil_printf("%s\r\n", logMessage);
361+
if (file_name != NULL)
362+
xil_printf("[%s L %d] %s\r\n", file_name, line_number, logMessage);
363+
else
364+
xil_printf("%s\r\n", logMessage);
320365
#elif defined(WOLFSSL_LINUXKM)
321-
printk("%s\n", logMessage);
366+
if (file_name != NULL)
367+
printk("[%s L %d] %s\n", file_name, line_number, logMessage);
368+
else
369+
printk("%s\n", logMessage);
322370
#elif defined(WOLFSSL_RENESAS_RA6M4)
323-
myprintf("%s\n", logMessage);
371+
if (file_name != NULL)
372+
myprintf("[%s L %d] %s\n", file_name, line_number, logMessage);
373+
else
374+
myprintf("%s\n", logMessage);
324375
#elif defined(STACK_SIZE_CHECKPOINT_MSG) && \
325376
defined(HAVE_STACK_SIZE_VERBOSE) && defined(HAVE_STACK_SIZE_VERBOSE_LOG)
326377
STACK_SIZE_CHECKPOINT_MSG(logMessage);
327378
#else
328-
if (log_prefix != NULL)
329-
fprintf(stderr, "[%s]: %s\n", log_prefix, logMessage);
330-
else
331-
fprintf(stderr, "%s\n", logMessage);
379+
if (log_prefix != NULL) {
380+
if (file_name != NULL)
381+
fprintf(stderr, "[%s]: [%s L %d] %s\n",
382+
log_prefix, file_name, line_number, logMessage);
383+
else
384+
fprintf(stderr, "[%s]: %s\n", log_prefix, logMessage);
385+
} else {
386+
if (file_name != NULL)
387+
fprintf(stderr, "[%s L %d] %s\n",
388+
file_name, line_number, logMessage);
389+
else
390+
fprintf(stderr, "%s\n", logMessage);
391+
}
332392
#endif
333393
}
334394
}
@@ -340,6 +400,7 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
340400
#ifndef WOLFSSL_MSG_EX_BUF_SZ
341401
#define WOLFSSL_MSG_EX_BUF_SZ 100
342402
#endif
403+
#undef WOLFSSL_MSG_EX /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
343404
#ifdef __clang__
344405
/* tell clang argument 1 is format */
345406
__attribute__((__format__ (__printf__, 1, 0)))
@@ -354,17 +415,43 @@ void WOLFSSL_MSG_EX(const char* fmt, ...)
354415
written = XVSNPRINTF(msg, sizeof(msg), fmt, args);
355416
va_end(args);
356417
if (written > 0)
357-
wolfssl_log(INFO_LOG , msg);
418+
wolfssl_log(INFO_LOG, NULL, 0, msg);
419+
}
420+
}
421+
422+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
423+
void WOLFSSL_MSG_EX2(const char *file, int line, const char* fmt, ...)
424+
{
425+
if (loggingEnabled) {
426+
char msg[WOLFSSL_MSG_EX_BUF_SZ];
427+
int written;
428+
va_list args;
429+
va_start(args, fmt);
430+
written = XVSNPRINTF(msg, sizeof(msg), fmt, args);
431+
va_end(args);
432+
if (written > 0)
433+
wolfssl_log(INFO_LOG, file, line, msg);
358434
}
359435
}
360436
#endif
361437

438+
#endif
439+
440+
#undef WOLFSSL_MSG /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
362441
void WOLFSSL_MSG(const char* msg)
363442
{
364443
if (loggingEnabled)
365-
wolfssl_log(INFO_LOG , msg);
444+
wolfssl_log(INFO_LOG, NULL, 0, msg);
366445
}
367446

447+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
448+
void WOLFSSL_MSG2(const char *file, int line, const char* msg)
449+
{
450+
if (loggingEnabled)
451+
wolfssl_log(INFO_LOG, file, line, msg);
452+
}
453+
#endif
454+
368455
#ifndef LINE_LEN
369456
#define LINE_LEN 16
370457
#endif
@@ -378,7 +465,7 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
378465
}
379466

380467
if (!buffer) {
381-
wolfssl_log(INFO_LOG, "\tNULL");
468+
wolfssl_log(INFO_LOG, NULL, 0, "\tNULL");
382469
return;
383470
}
384471

@@ -408,33 +495,67 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
408495
}
409496
}
410497

411-
wolfssl_log(INFO_LOG, line);
498+
wolfssl_log(INFO_LOG, NULL, 0, line);
412499
buffer += LINE_LEN;
413500
buflen -= LINE_LEN;
414501
}
415502
}
416503

417-
504+
#undef WOLFSSL_ENTER /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
418505
void WOLFSSL_ENTER(const char* msg)
419506
{
420507
if (loggingEnabled) {
421508
char buffer[WOLFSSL_MAX_ERROR_SZ];
422509
XSNPRINTF(buffer, sizeof(buffer), "wolfSSL Entering %s", msg);
423-
wolfssl_log(ENTER_LOG , buffer);
510+
wolfssl_log(ENTER_LOG, NULL, 0, buffer);
424511
}
425512
}
426513

514+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
515+
void WOLFSSL_ENTER2(const char *file, int line, const char* msg)
516+
{
517+
if (loggingEnabled) {
518+
char buffer[WOLFSSL_MAX_ERROR_SZ];
519+
XSNPRINTF(buffer, sizeof(buffer), "wolfSSL Entering %s", msg);
520+
wolfssl_log(ENTER_LOG, file, line, buffer);
521+
}
522+
}
523+
#endif
427524

525+
#undef WOLFSSL_LEAVE /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
428526
void WOLFSSL_LEAVE(const char* msg, int ret)
429527
{
430528
if (loggingEnabled) {
431529
char buffer[WOLFSSL_MAX_ERROR_SZ];
432530
XSNPRINTF(buffer, sizeof(buffer), "wolfSSL Leaving %s, return %d",
433531
msg, ret);
434-
wolfssl_log(LEAVE_LOG , buffer);
532+
wolfssl_log(LEAVE_LOG, NULL, 0, buffer);
435533
}
436534
}
437535

536+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
537+
void WOLFSSL_LEAVE2(const char *file, int line, const char* msg, int ret)
538+
{
539+
if (loggingEnabled) {
540+
char buffer[WOLFSSL_MAX_ERROR_SZ];
541+
XSNPRINTF(buffer, sizeof(buffer), "wolfSSL Leaving %s, return %d",
542+
msg, ret);
543+
wolfssl_log(LEAVE_LOG, file, line, buffer);
544+
}
545+
}
546+
#endif
547+
548+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
549+
/* restore the wrappers */
550+
#define WOLFSSL_MSG(msg) WOLFSSL_MSG2(__FILE__, __LINE__, msg)
551+
#define WOLFSSL_ENTER(msg) WOLFSSL_ENTER2(__FILE__, __LINE__, msg)
552+
#define WOLFSSL_LEAVE(msg, ret) WOLFSSL_LEAVE2(__FILE__, __LINE__, msg, ret)
553+
#ifdef XVSNPRINTF
554+
#define WOLFSSL_MSG_EX(fmt, args...) \
555+
WOLFSSL_MSG_EX2(__FILE__, __LINE__, fmt, ## args)
556+
#endif
557+
#endif
558+
438559
WOLFSSL_API int WOLFSSL_IS_DEBUG_ON(void)
439560
{
440561
return loggingEnabled;
@@ -1537,7 +1658,7 @@ void WOLFSSL_ERROR(int error)
15371658

15381659
#ifdef DEBUG_WOLFSSL
15391660
if (loggingEnabled)
1540-
wolfssl_log(ERROR_LOG , buffer);
1661+
wolfssl_log(ERROR_LOG, NULL, 0, buffer);
15411662
#endif
15421663
}
15431664
}
@@ -1546,7 +1667,7 @@ void WOLFSSL_ERROR_MSG(const char* msg)
15461667
{
15471668
#ifdef DEBUG_WOLFSSL
15481669
if (loggingEnabled)
1549-
wolfssl_log(ERROR_LOG , msg);
1670+
wolfssl_log(ERROR_LOG, NULL, 0, msg);
15501671
#else
15511672
(void)msg;
15521673
#endif

wolfssl/wolfcrypt/logging.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,25 @@ WOLFSSL_API void wolfSSL_SetLoggingPrefix(const char* prefix);
181181
#define WOLFSSL_MSG_EX(...) WC_DO_NOTHING
182182
#endif
183183
WOLFSSL_API void WOLFSSL_MSG(const char* msg);
184+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
185+
WOLFSSL_API void WOLFSSL_MSG2(
186+
const char *file, int line, const char* msg);
187+
WOLFSSL_API void WOLFSSL_ENTER2(
188+
const char *file, int line, const char* msg);
189+
WOLFSSL_API void WOLFSSL_LEAVE2(
190+
const char *file, int line, const char* msg, int ret);
191+
#define WOLFSSL_MSG(msg) WOLFSSL_MSG2(__FILE__, __LINE__, msg)
192+
#define WOLFSSL_ENTER(msg) WOLFSSL_ENTER2(__FILE__, __LINE__, msg)
193+
#define WOLFSSL_LEAVE(msg, ret) WOLFSSL_LEAVE2(__FILE__, __LINE__, msg, ret)
194+
#ifdef XVSNPRINTF
195+
WOLFSSL_API void WOLFSSL_MSG_EX2(
196+
const char *file, int line, const char* fmt, ...);
197+
#define WOLFSSL_MSG_EX(fmt, args...) \
198+
WOLFSSL_MSG_EX2(__FILE__, __LINE__, fmt, ## args)
199+
#else
200+
#define WOLFSSL_MSG_EX2(...) WC_DO_NOTHING
201+
#endif
202+
#endif
184203
WOLFSSL_API void WOLFSSL_BUFFER(const byte* buffer, word32 length);
185204

186205
#else

0 commit comments

Comments
 (0)