From 14852700cbb3a5c15c3918ec91f14aad2456a3e5 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Sat, 10 Aug 2024 01:40:51 -0700 Subject: [PATCH] core/log: ensure malformed logs cannot overflow ring buffer --- src/core/logging.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/logging.cpp b/src/core/logging.cpp index 01f9a90b..99899aa7 100644 --- a/src/core/logging.cpp +++ b/src/core/logging.cpp @@ -469,7 +469,7 @@ bool EncodedLogWriter::write(const LogMessage& message) { quint8 field = compressedTypeOf(message.type); auto secondDelta = this->lastMessageTime.secsTo(message.time); - if (secondDelta >= 29) { + if (secondDelta >= 0x1d) { // 0x1d = followed by delta int // 0x1e = followed by epoch delta int field |= (secondDelta < 0xffff ? 0x1d : 0x1e) << 3; @@ -521,6 +521,7 @@ start: if (!this->readVarInt(&secondDelta)) return false; } + if (index < 0 || index >= this->recentMessages.size()) return false; *slot = this->recentMessages.at(index); this->lastMessageTime = this->lastMessageTime.addSecs(static_cast(secondDelta)); slot->time = this->lastMessageTime;