diff options
author | Wei Jia <wjia@google.com> | 2016-01-07 16:03:03 -0800 |
---|---|---|
committer | MSe <mse1969@posteo.de> | 2017-10-05 00:27:18 +0200 |
commit | 9f55f23e016b645678a409e74dae38a9bbfaafe6 (patch) | |
tree | d6e329e0dcee770cdea47397b31a849f9dcdfd88 | |
parent | 00ab118533fb67fcfe5544fd198309f414083a0c (diff) | |
download | frameworks_av-9f55f23e016b645678a409e74dae38a9bbfaafe6.tar.gz frameworks_av-9f55f23e016b645678a409e74dae38a9bbfaafe6.tar.bz2 frameworks_av-9f55f23e016b645678a409e74dae38a9bbfaafe6.zip |
NuPlayerDecoder: fail gracefully when input data can't be held in allocated buffer.
Bug: 38391487
Bug: 24145279
Change-Id: I6b99ee2dc63063557f4ee2c5856f7c848e969752
(cherry picked from commit 56097a8ecc31ec308a1caa38f92b69f99324eada)
(cherry picked from commit 15c3740aa96df30049b7acf9d7dce77bbcf9d9d4)
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp index a18e1da279..b52e6d2f15 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp @@ -549,7 +549,10 @@ bool NuPlayer::Decoder::handleAnInputBuffer(size_t index) { ALOGI("[%s] resubmitting CSD", mComponentName.c_str()); msg->setBuffer("buffer", buffer); mCSDsToSubmit.removeAt(0); - CHECK(onInputBufferFetched(msg)); + if (!onInputBufferFetched(msg)) { + handleError(UNKNOWN_ERROR); + return false; + } return true; } @@ -913,7 +916,11 @@ bool NuPlayer::Decoder::onInputBufferFetched(const sp<AMessage> &msg) { // copy into codec buffer if (buffer != codecBuffer) { - CHECK_LE(buffer->size(), codecBuffer->capacity()); + if (buffer->size() > codecBuffer->capacity()) { + handleError(ERROR_BUFFER_TOO_SMALL); + mDequeuedInputBuffers.push_back(bufferIx); + return false; + } codecBuffer->setRange(0, buffer->size()); memcpy(codecBuffer->data(), buffer->data(), buffer->size()); } |