OSDN Git Service

AACExtractor: check bounds during seek
authorRobert Shih <robertshih@google.com>
Thu, 11 Jan 2018 22:38:23 +0000 (14:38 -0800)
committerandroid-build-team Robot <android-build-team-robot@google.com>
Thu, 18 Jan 2018 19:07:29 +0000 (19:07 +0000)
Bug: 70239507
Test: stagefright -a poc.aac
Change-Id: I61225a04c76fe8855bd2591fb14b734099fa3be6
(cherry picked from commit 0790581021d89ae1d7242e5eb1197bfd12725c85)

media/libstagefright/AACExtractor.cpp

index 7449aa7..3ba1858 100644 (file)
@@ -294,6 +294,10 @@ status_t AACSource::read(
     if (options && options->getSeekTo(&seekTimeUs, &mode)) {
         if (mFrameDurationUs > 0) {
             int64_t seekFrame = seekTimeUs / mFrameDurationUs;
+            if (seekFrame < 0 || seekFrame >= (int64_t)mOffsetVector.size()) {
+                android_errorWriteLog(0x534e4554, "70239507");
+                return ERROR_MALFORMED;
+            }
             mCurrentTimeUs = seekFrame * mFrameDurationUs;
 
             mOffset = mOffsetVector.itemAt(seekFrame);