From 7aaaabdea7858fcae36808569aa4a574ad8d95ee Mon Sep 17 00:00:00 2001
From: maxim_productengine <mnikolenko@productengine.com>
Date: Fri, 17 Aug 2018 16:14:03 +0300
Subject: [PATCH] MAINT-8991 Escape newlines in log entries

---
 indra/llcommon/llerror.cpp | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 29de79dc642..153bfab54c1 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -899,6 +899,33 @@ namespace LLError
 
 namespace
 {
+	std::string sanitizeMessage(const std::string& message)
+	{
+		std::string message_new;
+		S32 len = message.length();
+		for (S32 i = 0; i < len; i++)
+		{
+			char c = message[i];
+			if (c == '\\')
+			{
+				message_new += "\\\\";
+			}
+			else if (c == '\n')
+			{
+				message_new += "\\n";
+			}
+			else if (c == '\r')
+			{
+				message_new += "\\r";
+			}
+			else
+			{
+				message_new += c;
+			}
+		}
+		return message_new;
+	}
+	
 	void writeToRecorders(const LLError::CallSite& site, const std::string& message, bool show_location = true, bool show_time = true, bool show_tags = true, bool show_level = true, bool show_function = true)
 	{
 		LLError::ELevel level = site.mLevel;
@@ -937,7 +964,7 @@ namespace
 				message_stream << site.mFunctionString << " ";
 			}
 
-			message_stream << message;
+			message_stream << sanitizeMessage(message);
 
 			r->recordMessage(level, message_stream.str());
 		}
-- 
GitLab