diff --git a/drivers/syslog/syslog_channel.c b/drivers/syslog/syslog_channel.c index 5454087011..bff3d8d1cc 100644 --- a/drivers/syslog/syslog_channel.c +++ b/drivers/syslog/syslog_channel.c @@ -161,8 +161,14 @@ static ssize_t syslog_default_write(FAR struct syslog_channel_s *channel, FAR const char *buffer, size_t buflen) { #if defined(CONFIG_ARCH_LOWPUTC) + size_t nwritten; + nxsem_wait(&g_syslog_default_sem); - up_puts(buffer); + for (nwritten = 0; nwritten < buflen; nwritten++) + { + up_putc(buffer[nwritten]); + } + nxsem_post(&g_syslog_default_sem); #endif diff --git a/drivers/syslog/syslog_stream.c b/drivers/syslog/syslog_stream.c index 33fd7b60a7..a44bd5b947 100644 --- a/drivers/syslog/syslog_stream.c +++ b/drivers/syslog/syslog_stream.c @@ -56,11 +56,6 @@ static int syslogstream_flush(FAR struct lib_syslogstream_s *stream) if (iob != NULL && iob->io_len > 0) { - /* Ensure the buffer is zero terminated */ - - DEBUGASSERT(iob->io_len < CONFIG_IOB_BUFSIZE); - iob->io_data[iob->io_len] = '\0'; - /* Yes write the buffered data */ do @@ -105,7 +100,7 @@ static void syslogstream_addchar(FAR struct lib_syslogstream_s *stream, /* Is the buffer full? */ - if (iob->io_len >= CONFIG_IOB_BUFSIZE - 1) + if (iob->io_len >= CONFIG_IOB_BUFSIZE) { /* Yes.. then flush the buffer */