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

Commit fb2ac71b authored by Jack Yu's avatar Jack Yu
Browse files

Fixed NPE when local or remote port range does not exist

Added null check for local and remote port range.

Bug: 213523984
Bug: 213139361
Test: atest QosBearerSessionTest
Merged-In: I749f369c0daa5c840a77d37828f65e42262d85f5
Change-Id: I749f369c0daa5c840a77d37828f65e42262d85f5
(cherry picked from commit bc1ae5c2)
parent 7855cf3a
Loading
Loading
Loading
Loading
+18 −19
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.telephony.data;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.net.LinkAddress;
import android.os.Parcel;
import android.os.Parcelable;
@@ -35,11 +36,10 @@ import java.util.Objects;
 * @hide
 */
public final class QosBearerFilter implements Parcelable {

    private List<LinkAddress> localAddresses;
    private List<LinkAddress> remoteAddresses;
    private PortRange localPort;
    private PortRange remotePort;
    private @NonNull List<LinkAddress> localAddresses;
    private @NonNull List<LinkAddress> remoteAddresses;
    private @Nullable PortRange localPort;
    private @Nullable PortRange remotePort;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
@@ -61,8 +61,7 @@ public final class QosBearerFilter implements Parcelable {
     */
    public static final int QOS_MAX_PORT = 65535; // android.hardware.radio.V1_6.QosPortRange.MIN;

    @QosProtocol
    private int protocol;
    private @QosProtocol int protocol;

    private int typeOfServiceMask;

@@ -85,8 +84,7 @@ public final class QosBearerFilter implements Parcelable {
    public static final int QOS_FILTER_DIRECTION_BIDIRECTIONAL =
            android.hardware.radio.V1_6.QosFilterDirection.BIDIRECTIONAL;

    @QosBearerFilterDirection
    private int filterDirection;
    private @QosBearerFilterDirection int filterDirection;

    /**
     * Specified the order in which the filter needs to be matched.
@@ -94,9 +92,10 @@ public final class QosBearerFilter implements Parcelable {
     */
    private int precedence;

    public QosBearerFilter(List<LinkAddress> localAddresses, List<LinkAddress> remoteAddresses,
            PortRange localPort, PortRange remotePort, int protocol, int tos,
            long flowLabel, long spi, int direction, int precedence) {
    public QosBearerFilter(@NonNull List<LinkAddress> localAddresses,
            @NonNull List<LinkAddress> remoteAddresses, @Nullable PortRange localPort,
            @Nullable PortRange remotePort, @QosProtocol int protocol, int tos, long flowLabel,
            long spi, @QosBearerFilterDirection int direction, int precedence) {
        this.localAddresses = new ArrayList<>();
        this.localAddresses.addAll(localAddresses);
        this.remoteAddresses = new ArrayList<>();
@@ -111,19 +110,19 @@ public final class QosBearerFilter implements Parcelable {
        this.precedence = precedence;
    }

    public List<LinkAddress> getLocalAddresses() {
    public @NonNull List<LinkAddress> getLocalAddresses() {
        return localAddresses;
    }

    public List<LinkAddress> getRemoteAddresses() {
    public @NonNull List<LinkAddress> getRemoteAddresses() {
        return remoteAddresses;
    }

    public PortRange getLocalPortRange() {
    public @Nullable PortRange getLocalPortRange() {
        return localPort;
    }

    public PortRange getRemotePortRange() {
    public @Nullable PortRange getRemotePortRange() {
        return remotePort;
    }

@@ -245,8 +244,8 @@ public final class QosBearerFilter implements Parcelable {
                && localAddresses.containsAll(other.localAddresses)
                && remoteAddresses.size() == other.remoteAddresses.size()
                && remoteAddresses.containsAll(other.remoteAddresses)
                && localPort.equals(other.localPort)
                && remotePort.equals(other.remotePort)
                && Objects.equals(localPort, other.localPort)
                && Objects.equals(remotePort, other.remotePort)
                && protocol == other.protocol
                && typeOfServiceMask == other.typeOfServiceMask
                && flowLabel == other.flowLabel