From b97de268279e5d21a1d7dd406c137a4db28caa33 Mon Sep 17 00:00:00 2001 From: kongr45gpen <electrovesta@gmail.com> Date: Wed, 21 Aug 2019 03:51:04 +0300 Subject: [PATCH] Do not rely on second-level checks when appending octet strings --- src/Message.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Message.cpp b/src/Message.cpp index b1dc6999..7ca102ef 100644 --- a/src/Message.cpp +++ b/src/Message.cpp @@ -191,6 +191,8 @@ void Message::appendFixedString(const etl::istring& string) { void Message::appendOctetString(const etl::istring& string) { // Make sure that the string is large enough to count ASSERT_INTERNAL(string.size() <= (std::numeric_limits<uint16_t>::max)(), ErrorHandler::StringTooLarge); + // Redundant check to make sure we fail before appending string.size() + ASSERT_INTERNAL(dataSize + 2 + string.size() < ECSS_MAX_MESSAGE_SIZE, ErrorHandler::MessageTooLarge); appendUint16(string.size()); appendString(string); -- GitLab