From adb92aba657cfc564c4399b3174808ffe4c26bc1 Mon Sep 17 00:00:00 2001 From: Vibhav Pant Date: Thu, 31 Aug 2023 01:43:15 +0530 Subject: [PATCH] Print: Fix crash because of the buffer being freed incorrectly. --- internal/platform/implementation/linux/log_message.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/internal/platform/implementation/linux/log_message.cc b/internal/platform/implementation/linux/log_message.cc index b8f898dd..c542b454 100644 --- a/internal/platform/implementation/linux/log_message.cc +++ b/internal/platform/implementation/linux/log_message.cc @@ -121,12 +121,11 @@ void LogMessage::Print(const char *format, ...) { va_list ap; va_start(ap, format); auto ret = vasprintf(&buf, format, ap); - va_end(ap); - - if (ret >= 0) { - free(buf); - log_streamer_.stream() << std::string(buf); + if (ret > 0) { + log_streamer_.stream() << std::string(buf, ret); } + if (buf != nullptr) free(buf); + va_end(ap); } std::ostream &LogMessage::Stream() { return log_streamer_.stream(); }