From db2671ea0ce4da288066a6816a0e140ea19f5253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=85=E3=81=AE=E5=A3=AB?= Date: Mon, 29 Sep 2025 12:46:16 +0800 Subject: [PATCH] fix: log crashes when max_bufsize is exceeded --- base/hlog.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/base/hlog.c b/base/hlog.c index 215443ea8..38a1eb962 100644 --- a/base/hlog.c +++ b/base/hlog.c @@ -463,6 +463,7 @@ int logger_print(logger_t* logger, int level, const char* fmt, ...) { buf[len++] = *p; } ++p; + if (len >= bufsize) break; } } else { len += snprintf(buf + len, bufsize - len, "%04d-%02d-%02d %02d:%02d:%02d.%03d %s ", @@ -475,12 +476,15 @@ int logger_print(logger_t* logger, int level, const char* fmt, ...) { va_end(ap); } - if (logger->enable_color) { + if (logger->enable_color && len < bufsize) { len += snprintf(buf + len, bufsize - len, "%s", CLR_CLR); } - if(len < bufsize) { + if (len < bufsize) { buf[len++] = '\n'; + } else { + buf[bufsize - 1] = '\n'; + len = bufsize; } if (logger->handler) {