Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7aa2d40b authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 7783058 from 8c824b81 to sc-v2-release

Change-Id: I4d2217fa5361b84d4c2ed2b139267373975283ec
parents ce6008fc 8c824b81
Loading
Loading
Loading
Loading
+13 −3
Original line number Original line Diff line number Diff line
@@ -157,6 +157,7 @@ private:


    MediaBufferHelper *mBuffer;
    MediaBufferHelper *mBuffer;


    size_t mSrcBufferSize;
    uint8_t *mSrcBuffer;
    uint8_t *mSrcBuffer;


    bool mIsHeif;
    bool mIsHeif;
@@ -5083,6 +5084,7 @@ MPEG4Source::MPEG4Source(
      mNALLengthSize(0),
      mNALLengthSize(0),
      mStarted(false),
      mStarted(false),
      mBuffer(NULL),
      mBuffer(NULL),
      mSrcBufferSize(0),
      mSrcBuffer(NULL),
      mSrcBuffer(NULL),
      mItemTable(itemTable),
      mItemTable(itemTable),
      mElstShiftStartTicks(elstShiftStartTicks),
      mElstShiftStartTicks(elstShiftStartTicks),
@@ -5264,6 +5266,7 @@ media_status_t MPEG4Source::start() {
        // file probably specified a bad max size
        // file probably specified a bad max size
        return AMEDIA_ERROR_MALFORMED;
        return AMEDIA_ERROR_MALFORMED;
    }
    }
    mSrcBufferSize = max_size;


    mStarted = true;
    mStarted = true;


@@ -5280,6 +5283,7 @@ media_status_t MPEG4Source::stop() {
        mBuffer = NULL;
        mBuffer = NULL;
    }
    }


    mSrcBufferSize = 0;
    delete[] mSrcBuffer;
    delete[] mSrcBuffer;
    mSrcBuffer = NULL;
    mSrcBuffer = NULL;


@@ -6467,13 +6471,19 @@ media_status_t MPEG4Source::read(
        // Whole NAL units are returned but each fragment is prefixed by
        // Whole NAL units are returned but each fragment is prefixed by
        // the start code (0x00 00 00 01).
        // the start code (0x00 00 00 01).
        ssize_t num_bytes_read = 0;
        ssize_t num_bytes_read = 0;
        bool mSrcBufferFitsDataToRead = size <= mSrcBufferSize;
        if (mSrcBufferFitsDataToRead) {
          num_bytes_read = mDataSource->readAt(offset, mSrcBuffer, size);
          num_bytes_read = mDataSource->readAt(offset, mSrcBuffer, size);
        } else {
          // We are trying to read a sample larger than the expected max sample size.
          // Fall through and let the failure be handled by the following if.
          android_errorWriteLog(0x534e4554, "188893559");
        }


        if (num_bytes_read < (ssize_t)size) {
        if (num_bytes_read < (ssize_t)size) {
            mBuffer->release();
            mBuffer->release();
            mBuffer = NULL;
            mBuffer = NULL;

            return mSrcBufferFitsDataToRead ? AMEDIA_ERROR_IO : AMEDIA_ERROR_MALFORMED;
            return AMEDIA_ERROR_IO;
        }
        }


        uint8_t *dstData = (uint8_t *)mBuffer->data();
        uint8_t *dstData = (uint8_t *)mBuffer->data();