Fix incorrect pointer arithmetics am: f13b6dc7b7 Original change: https://android-review.googlesource.com/c/platform/system/libcppbor/+/3412639 Change-Id: Ic768e8f5ea9737fa57d777bfd431e93f01dd6acd Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/src/cppbor_parse.cpp b/src/cppbor_parse.cpp index e84b625..060d9bf 100644 --- a/src/cppbor_parse.cpp +++ b/src/cppbor_parse.cpp
@@ -17,6 +17,7 @@ #include "cppbor_parse.h" #include <algorithm> +#include <cstddef> #include <cstdint> #include <cstring> #include <memory> @@ -53,7 +54,7 @@ template <typename T, typename = std::enable_if_t<std::is_unsigned_v<T>>> std::tuple<bool, uint64_t, const uint8_t*> parseLength(const uint8_t* pos, const uint8_t* end, ParseClient* parseClient) { - if (pos + sizeof(T) > end) { + if ((end - pos) < static_cast<ptrdiff_t>(sizeof(T))) { parseClient->error(pos - 1, insufficientLengthString(sizeof(T), end - pos, "length field")); return {false, 0, pos}; }