aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHasini Gunasinghe <hasinitg@google.com>2022-01-21 22:13:21 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-01-21 22:13:21 +0000
commitaca96f479b7618f21524efbfb08228760a7a71c7 (patch)
tree52bb07b055777dc81d6ea4023d57d6b2215f4fc3
parent9424732f83df8fcdb601b77d3aa3e346583c77cb (diff)
parent66189c349a3ad505ea7007912e168ff6cab6e98e (diff)
downloadlibcppbor-aca96f479b7618f21524efbfb08228760a7a71c7.tar.gz
Add input validation for 'parseRecursively' method. am: 31258214ed am: 66189c349a
Original change: https://android-review.googlesource.com/c/platform/external/libcppbor/+/1956719 Change-Id: I6f88a716b9796c00ff220711c2bebe93e651fee0
-rw-r--r--src/cppbor_parse.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cppbor_parse.cpp b/src/cppbor_parse.cpp
index 964a72d..23ebd6b 100644
--- a/src/cppbor_parse.cpp
+++ b/src/cppbor_parse.cpp
@@ -195,6 +195,13 @@ std::tuple<const uint8_t*, ParseClient*> handleCompound(
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.");
+ return {begin, nullptr};
+ }
+
const uint8_t* pos = begin;
MajorType type = static_cast<MajorType>(*pos & 0xE0);