From db9a71219f77e03d1f2bf71a0a3562eb8b43de97 Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Fri, 17 May 2019 13:14:06 -0700 Subject: libbinder: readCString: no ubsan sub-overflow Bug: 131859347 Test: fuzzer Change-Id: I95a0f59684a172925f1eab97ff21e5d14bc79cc8 Merged-In: I95a0f59684a172925f1eab97ff21e5d14bc79cc8 (cherry picked from commit d0d4b584fc294d2c124385644099852918416344) --- libs/binder/Parcel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libs/binder/Parcel.cpp') diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 2e7edd7a28..8e206f501f 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -2013,8 +2013,8 @@ status_t Parcel::readUtf8FromUtf16(std::unique_ptr* str) const { 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(mData+mDataPos); // is the string's trailing NUL within the parcel's valid bounds? const char* eos = reinterpret_cast(memchr(str, 0, avail)); -- cgit v1.2.3-59-g8ed1b