Merge "Fix potential overflows"
diff --git a/media/libstagefright/SampleIterator.cpp b/media/libstagefright/SampleIterator.cpp
index 54c9fa3..8ddf7f3 100644
--- a/media/libstagefright/SampleIterator.cpp
+++ b/media/libstagefright/SampleIterator.cpp
@@ -305,8 +305,16 @@
return ERROR_OUT_OF_RANGE;
}
- while (sampleIndex >= mTTSSampleIndex + mTTSCount) {
- if (mTimeToSampleIndex == mTable->mTimeToSampleCount) {
+ while (true) {
+ if (mTTSSampleIndex > UINT32_MAX - mTTSCount) {
+ return ERROR_OUT_OF_RANGE;
+ }
+ if(sampleIndex < mTTSSampleIndex + mTTSCount) {
+ break;
+ }
+ if (mTimeToSampleIndex == mTable->mTimeToSampleCount ||
+ mTTSCount > UINT32_MAX / mTTSDuration ||
+ mTTSSampleTime > UINT32_MAX - (mTTSCount * mTTSDuration)) {
return ERROR_OUT_OF_RANGE;
}