summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2023-04-12 12:41:03 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-04-12 12:41:03 +0000
commitc21e96556f5403d8668ea4474b7ce0d9f0ee516d (patch)
treefa9cbc6b0aabe29c7151724a834d4d8b39c74af3
parent0cafff000da0cf443428e7b2a82979d48b6bf690 (diff)
parentd63a1d1644ece3585813bb36028dcf323954eaba (diff)
Merge "Catch nullptr possibilities in MediaExtractor jni code" into udc-dev am: d63a1d1644
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22555207 Change-Id: I62806ed80b13022e1828f180daa3eb893ebfd721 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--media/jni/android_media_MediaExtractor.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp
index 116237f6b998..609c7a40bb36 100644
--- a/media/jni/android_media_MediaExtractor.cpp
+++ b/media/jni/android_media_MediaExtractor.cpp
@@ -196,6 +196,15 @@ status_t JMediaExtractor::readSampleData(
dstSize = (size_t) env->GetDirectBufferCapacity(byteBuf);
}
+ // unlikely, but GetByteArrayElements() can fail
+ if (dst == nullptr) {
+ ALOGE("no buffer into which to read the data");
+ if (byteArray != NULL) {
+ env->ReleaseByteArrayElements(byteArray, (jbyte *)dst, 0);
+ }
+ return -ENOMEM;
+ }
+
if (dstSize < offset) {
if (byteArray != NULL) {
env->ReleaseByteArrayElements(byteArray, (jbyte *)dst, 0);
@@ -204,8 +213,10 @@ status_t JMediaExtractor::readSampleData(
return -ERANGE;
}
+ // passes in the backing memory to use, so it doesn't fail
sp<ABuffer> buffer = new ABuffer((char *)dst + offset, dstSize - offset);
+ buffer->setRange(0, 0); // mark it empty
status_t err = mImpl->readSampleData(buffer);
if (byteArray != NULL) {