summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/HardwareBuffer.java6
-rw-r--r--core/jni/android_hardware_HardwareBuffer.cpp6
2 files changed, 8 insertions, 4 deletions
diff --git a/core/java/android/hardware/HardwareBuffer.java b/core/java/android/hardware/HardwareBuffer.java
index 889a43cf7e63..5ff0e7aff6aa 100644
--- a/core/java/android/hardware/HardwareBuffer.java
+++ b/core/java/android/hardware/HardwareBuffer.java
@@ -22,6 +22,7 @@ import android.annotation.LongDef;
import android.annotation.NonNull;
import android.compat.annotation.UnsupportedAppUsage;
import android.graphics.GraphicBuffer;
+import android.os.BadParcelableException;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
@@ -399,11 +400,14 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable {
public static final @android.annotation.NonNull Parcelable.Creator<HardwareBuffer> CREATOR =
new Parcelable.Creator<HardwareBuffer>() {
public HardwareBuffer createFromParcel(Parcel in) {
+ if (in == null) {
+ throw new NullPointerException("null passed to createFromParcel");
+ }
long nativeObject = nReadHardwareBufferFromParcel(in);
if (nativeObject != 0) {
return new HardwareBuffer(nativeObject);
}
- return null;
+ throw new BadParcelableException("Failed to read hardware buffer");
}
public HardwareBuffer[] newArray(int size) {
diff --git a/core/jni/android_hardware_HardwareBuffer.cpp b/core/jni/android_hardware_HardwareBuffer.cpp
index 5fcc46ee1499..2ea2158d1884 100644
--- a/core/jni/android_hardware_HardwareBuffer.cpp
+++ b/core/jni/android_hardware_HardwareBuffer.cpp
@@ -203,10 +203,10 @@ static jlong android_hardware_HardwareBuffer_read(JNIEnv* env, jobject clazz,
Parcel* parcel = parcelForJavaObject(env, in);
if (parcel) {
sp<GraphicBuffer> buffer = new GraphicBuffer();
- parcel->read(*buffer);
- return reinterpret_cast<jlong>(new GraphicBufferWrapper(buffer));
+ if (parcel->read(*buffer) == STATUS_OK) {
+ return reinterpret_cast<jlong>(new GraphicBufferWrapper(buffer));
+ }
}
-
return NULL;
}