Merge "Catch nullptr possibilities in MediaExtractor jni code" into udc-dev
diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp
index 116237f..609c7a4 100644
--- a/media/jni/android_media_MediaExtractor.cpp
+++ b/media/jni/android_media_MediaExtractor.cpp
@@ -196,6 +196,15 @@
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 @@
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) {