リビジョン | ac561ef452819d50edd168f9afb1670d9ca3f9da (tree) |
---|---|
日時 | 2017-09-15 23:39:55 |
作者 | Chong Zhang <chz@goog...> |
コミッター | Dan Pasanen |
stagefright: fix crash due to bad timestamp index
bug: 62872863
Change-Id: I7f8ae62173d8b4bef0d6c35166427871408ad9dd
(cherry picked from commit 069c97e06521035e81ead2eeff8960613fed9254)
@@ -95,10 +95,10 @@ SoftMPEG2::~SoftMPEG2() { | ||
95 | 95 | } |
96 | 96 | |
97 | 97 | |
98 | -static size_t getMinTimestampIdx(OMX_S64 *pNTimeStamp, bool *pIsTimeStampValid) { | |
98 | +static ssize_t getMinTimestampIdx(OMX_S64 *pNTimeStamp, bool *pIsTimeStampValid) { | |
99 | 99 | OMX_S64 minTimeStamp = LLONG_MAX; |
100 | - int idx = -1; | |
101 | - for (size_t i = 0; i < MAX_TIME_STAMPS; i++) { | |
100 | + ssize_t idx = -1; | |
101 | + for (ssize_t i = 0; i < MAX_TIME_STAMPS; i++) { | |
102 | 102 | if (pIsTimeStampValid[i]) { |
103 | 103 | if (pNTimeStamp[i] < minTimeStamp) { |
104 | 104 | minTimeStamp = pNTimeStamp[i]; |
@@ -793,10 +793,15 @@ void SoftMPEG2::onQueueFilled(OMX_U32 portIndex) { | ||
793 | 793 | } |
794 | 794 | |
795 | 795 | if (s_dec_op.u4_output_present) { |
796 | - size_t timeStampIdx; | |
796 | + ssize_t timeStampIdx; | |
797 | 797 | outHeader->nFilledLen = (mWidth * mHeight * 3) / 2; |
798 | 798 | |
799 | 799 | timeStampIdx = getMinTimestampIdx(mTimeStamps, mTimeStampsValid); |
800 | + if (timeStampIdx < 0) { | |
801 | + ALOGE("b/62872863, Invalid timestamp index!"); | |
802 | + android_errorWriteLog(0x534e4554, "62872863"); | |
803 | + return; | |
804 | + } | |
800 | 805 | outHeader->nTimeStamp = mTimeStamps[timeStampIdx]; |
801 | 806 | mTimeStampsValid[timeStampIdx] = false; |
802 | 807 |