summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2016-01-07 16:03:03 -0800
committerMSe <mse1969@posteo.de>2017-10-05 00:27:18 +0200
commit9f55f23e016b645678a409e74dae38a9bbfaafe6 (patch)
treed6e329e0dcee770cdea47397b31a849f9dcdfd88
parent00ab118533fb67fcfe5544fd198309f414083a0c (diff)
downloadframeworks_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.cpp11
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());
}