diff options
| -rw-r--r-- | core/java/android/hardware/HardwareBuffer.java | 6 | ||||
| -rw-r--r-- | core/jni/android_hardware_HardwareBuffer.cpp | 6 |
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; } |