Skip to content

Commit

Permalink
Fix out of bounds vector write in Logger::addOutput(ILogOutput *out)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
est31 committed Oct 24, 2015
1 parent 7d5c736 commit 1f76808
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/log.cpp
Expand Up @@ -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)
Expand All @@ -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);
}
Expand Down

0 comments on commit 1f76808

Please sign in to comment.