From 1f76808e4fa5a198f1dbddba6fa18ea1ecb20cb6 Mon Sep 17 00:00:00 2001
From: est31 <MTest31@outlook.com>
Date: Sun, 25 Oct 2015 00:01:57 +0200
Subject: [PATCH] Fix out of bounds vector write in
 Logger::addOutput(ILogOutput *out)

Previously, the invocation of Logger::addOutput(ILogOutput *out) led to
an out of bounds write of the m_outputs vector, resulting in the
m_silenced_levels array being modified.

Fortunately, the only caller of that method was android system logging,
and only since a few commits ago.
---
 src/log.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/log.cpp b/src/log.cpp
index 7cae8b670..3ffd66673 100644
--- a/src/log.cpp
+++ b/src/log.cpp
@@ -172,7 +172,7 @@ LogLevel Logger::stringToLevel(const std::string &name)
 
 void Logger::addOutput(ILogOutput *out)
 {
-	addOutputMaxLevel(out, LL_MAX);
+	addOutputMaxLevel(out, (LogLevel)(LL_MAX - 1));
 }
 
 void Logger::addOutput(ILogOutput *out, LogLevel lev)
@@ -182,6 +182,7 @@ void Logger::addOutput(ILogOutput *out, LogLevel lev)
 
 void Logger::addOutputMaxLevel(ILogOutput *out, LogLevel lev)
 {
+	assert(lev < LL_MAX);
 	for (size_t i = 0; i <= lev; i++)
 		m_outputs[i].push_back(out);
 }
-- 
GitLab