readCString: no ubsan sub-overflow am: 1086548c6c am: 13788cbc36 am: 1a4c63ee1a am: 87a7f9eb07
am: 1ab3b13ae5
Change-Id: Ia832d4278ff81859a48d3ceadd93642e5249e4cb
diff --git a/Parcel.cpp b/Parcel.cpp
index 4b61738..d6ea481 100644
--- a/Parcel.cpp
+++ b/Parcel.cpp
@@ -1324,8 +1324,8 @@
const char* Parcel::readCString() const
{
- const size_t avail = mDataSize-mDataPos;
- if (avail > 0) {
+ if (mDataPos < mDataSize) {
+ const size_t avail = mDataSize-mDataPos;
const char* str = reinterpret_cast<const char*>(mData+mDataPos);
// is the string's trailing NUL within the parcel's valid bounds?
const char* eos = reinterpret_cast<const char*>(memchr(str, 0, avail));