Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c21dcc02 authored by Avichal Rakesh's avatar Avichal Rakesh
Browse files

camera2: Fix NPE in SessionConfiguration#hashCode

SessionConfiguration#hashCode currently calls mInputConfig.hashCode()
which may lead to a NullPointerException if mInputConfig is not
set.

This patch replaces the mInputConfig.hashCode() call with
Objects.hashCode(mInputConfig) to ensure that null value of
mInputConfig is properly handled, and indicates that
mOutputConfigurations cannot be null by contract.

Bug: 358211021
Test: Verified that calling SessionConfiguration#hashCode()
      with null mInputConfig no longer throws a
      NullPointerException.
Flag: EXEMPT minor bugfix
Change-Id: I30a7e1cb2372a42d4c3af2e2659bc429111b4dae
parent 9cb02847
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -17,8 +17,6 @@

package android.hardware.camera2.params;

import static com.android.internal.util.Preconditions.*;

import android.annotation.CallbackExecutor;
import android.annotation.FlaggedApi;
import android.annotation.IntDef;
@@ -32,8 +30,6 @@ import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraDevice.CameraDeviceSetup;
import android.hardware.camera2.CaptureRequest;
import android.hardware.camera2.impl.CameraMetadataNative;
import android.hardware.camera2.params.InputConfiguration;
import android.hardware.camera2.params.OutputConfiguration;
import android.hardware.camera2.utils.HashCodeHelpers;
import android.media.ImageReader;
import android.os.Parcel;
@@ -46,6 +42,7 @@ import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;

/**
@@ -95,8 +92,8 @@ public final class SessionConfiguration implements Parcelable {
    public @interface SessionMode {};

    // Camera capture session related parameters.
    private List<OutputConfiguration> mOutputConfigurations;
    private CameraCaptureSession.StateCallback mStateCallback;
    private final @NonNull List<OutputConfiguration> mOutputConfigurations;
    private CameraCaptureSession.StateCallback mStateCallback = null;
    private int mSessionType;
    private Executor mExecutor = null;
    private InputConfiguration mInputConfig = null;
@@ -268,7 +265,8 @@ public final class SessionConfiguration implements Parcelable {
     */
    @Override
    public int hashCode() {
        return HashCodeHelpers.hashCode(mOutputConfigurations.hashCode(), mInputConfig.hashCode(),
        return HashCodeHelpers.hashCode(mOutputConfigurations.hashCode(),
                Objects.hashCode(mInputConfig),
                mSessionType);
    }