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};
     }