Add input validation for 'parseRecursively' method. Bug: 192743373 Test: To be verified with fuzzer test case. Change-Id: If052fcb2b2bbc5e0bfc8cfccc51cef11b9914017
diff --git a/src/cppbor_parse.cpp b/src/cppbor_parse.cpp index 964a72d..9d388a3 100644 --- a/src/cppbor_parse.cpp +++ b/src/cppbor_parse.cpp
@@ -195,6 +195,13 @@ std::tuple<const uint8_t*, ParseClient*> parseRecursively(const uint8_t* begin, const uint8_t* end, bool emitViews, ParseClient* parseClient) { + if (begin == end) { + parseClient->error( + begin, + "Input buffer is empty. Begin and end cannot point to the same location."); + return {begin, nullptr}; + } + const uint8_t* pos = begin; MajorType type = static_cast<MajorType>(*pos & 0xE0);