From bfb0095ec79df77771f54af46398c09eef87404c Mon Sep 17 00:00:00 2001 From: dongjiuzhu1 Date: Fri, 25 Aug 2023 15:14:39 +0800 Subject: [PATCH] driver/syslog: reset syslog buffer when syslog buffer include invalid data When the machine is cold started, the psram area where the syslog buffer is located contains some random values, so it will cause loss of valid log. Signed-off-by: dongjiuzhu1 --- drivers/syslog/ramlog.c | 3 ++- drivers/syslog/syslog_rpmsg.c | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/syslog/ramlog.c b/drivers/syslog/ramlog.c index 6a2a85bb2e..5776ee6af3 100644 --- a/drivers/syslog/ramlog.c +++ b/drivers/syslog/ramlog.c @@ -257,9 +257,10 @@ static void ramlog_initbuf(void) { cur = priv->rl_buffer[i]; - if (!isascii(cur)) + if (!isprint(cur) && !isspace(cur) && cur != '\0') { memset(priv->rl_buffer, 0, priv->rl_bufsize); + is_empty = true; break; } else if (prev && !cur) diff --git a/drivers/syslog/syslog_rpmsg.c b/drivers/syslog/syslog_rpmsg.c index 49873263e0..0409797ffa 100644 --- a/drivers/syslog/syslog_rpmsg.c +++ b/drivers/syslog/syslog_rpmsg.c @@ -418,9 +418,10 @@ void syslog_rpmsg_init_early(FAR void *buffer, size_t size) { cur = priv->buffer[i]; - if (!isascii(cur)) + if (!isprint(cur) && !isspace(cur) && cur != '\0') { - memset(priv->buffer, 0, size); + memset(buffer, 0, size); + is_empty = true; break; } else if (prev && !cur)