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

Commit 039ed698 authored by Lorenzo Colitti's avatar Lorenzo Colitti
Browse files

Observe mOwnerUID in NetworkCapabilities#equals.

Currently, NetworkCapabilities's equals and hashCode methods
ignore mOwnerUID. This is confusing because it is inconsistent
with pretty much every other member of this class.

Bug: 175188445
Test: atest CtsNetTestCases:NetworkAgentTest \
            CtsNetTestCases:Ikev2VpnTest \
	    CtsNetTestCases:VpnServiceTest HostsideVpnTests \
	    CtsNetTestCases:android.net.cts.ConnectivityDiagnosticsManagerTest \
	    ConnectivityServiceTest com.android.server.connectivity.VpnTest
Change-Id: I2348b7a35f32a931687f2d3c2fa57620a12fe06f
parent 0f3ce471
Loading
Loading
Loading
Loading
+16 −10
Original line number Original line Diff line number Diff line
@@ -975,6 +975,10 @@ public final class NetworkCapabilities implements Parcelable {
        return mOwnerUid;
        return mOwnerUid;
    }
    }


    private boolean equalsOwnerUid(@NonNull final NetworkCapabilities nc) {
        return mOwnerUid == nc.mOwnerUid;
    }

    /**
    /**
     * UIDs of packages that are administrators of this network, or empty if none.
     * UIDs of packages that are administrators of this network, or empty if none.
     *
     *
@@ -1684,6 +1688,7 @@ public final class NetworkCapabilities implements Parcelable {
                && equalsTransportInfo(that)
                && equalsTransportInfo(that)
                && equalsUids(that)
                && equalsUids(that)
                && equalsSSID(that)
                && equalsSSID(that)
                && equalsOwnerUid(that)
                && equalsPrivateDnsBroken(that)
                && equalsPrivateDnsBroken(that)
                && equalsRequestor(that)
                && equalsRequestor(that)
                && equalsAdministratorUids(that);
                && equalsAdministratorUids(that);
@@ -1697,17 +1702,18 @@ public final class NetworkCapabilities implements Parcelable {
                + ((int) (mUnwantedNetworkCapabilities >> 32) * 7)
                + ((int) (mUnwantedNetworkCapabilities >> 32) * 7)
                + ((int) (mTransportTypes & 0xFFFFFFFF) * 11)
                + ((int) (mTransportTypes & 0xFFFFFFFF) * 11)
                + ((int) (mTransportTypes >> 32) * 13)
                + ((int) (mTransportTypes >> 32) * 13)
                + (mLinkUpBandwidthKbps * 17)
                + mLinkUpBandwidthKbps * 17
                + (mLinkDownBandwidthKbps * 19)
                + mLinkDownBandwidthKbps * 19
                + Objects.hashCode(mNetworkSpecifier) * 23
                + Objects.hashCode(mNetworkSpecifier) * 23
                + (mSignalStrength * 29)
                + mSignalStrength * 29
                + Objects.hashCode(mUids) * 31
                + mOwnerUid * 31
                + Objects.hashCode(mSSID) * 37
                + Objects.hashCode(mUids) * 37
                + Objects.hashCode(mTransportInfo) * 41
                + Objects.hashCode(mSSID) * 41
                + Objects.hashCode(mPrivateDnsBroken) * 43
                + Objects.hashCode(mTransportInfo) * 43
                + Objects.hashCode(mRequestorUid) * 47
                + Objects.hashCode(mPrivateDnsBroken) * 47
                + Objects.hashCode(mRequestorPackageName) * 53
                + Objects.hashCode(mRequestorUid) * 53
                + Arrays.hashCode(mAdministratorUids) * 59;
                + Objects.hashCode(mRequestorPackageName) * 59
                + Arrays.hashCode(mAdministratorUids) * 61;
    }
    }


    @Override
    @Override
+4 −6
Original line number Original line Diff line number Diff line
@@ -1980,18 +1980,16 @@ public class ConnectivityServiceTest {
        mWiFiNetworkAgent.setNetworkCapabilities(agentCapabilities, true);
        mWiFiNetworkAgent.setNetworkCapabilities(agentCapabilities, true);
        waitForIdle();
        waitForIdle();


        // Check that the owner UID is not updated.
        // Check that the owner UID is updated.
        // The owner UID is -1 because it is visible only to the UID that owns the network.
        NetworkCapabilities nc = mCm.getNetworkCapabilities(mWiFiNetworkAgent.getNetwork());
        NetworkCapabilities nc = mCm.getNetworkCapabilities(mWiFiNetworkAgent.getNetwork());
        assertEquals(originalOwnerUid, nc.getOwnerUid());
        assertEquals(-1, nc.getOwnerUid());


        // Make an unrelated change to the capabilities.
        // Make an unrelated change to the capabilities and check it. The owner UID remains -1.
        assertFalse(agentCapabilities.hasCapability(NET_CAPABILITY_NOT_CONGESTED));
        assertFalse(agentCapabilities.hasCapability(NET_CAPABILITY_NOT_CONGESTED));
        agentCapabilities.addCapability(NET_CAPABILITY_NOT_CONGESTED);
        agentCapabilities.addCapability(NET_CAPABILITY_NOT_CONGESTED);
        mWiFiNetworkAgent.setNetworkCapabilities(agentCapabilities, true);
        mWiFiNetworkAgent.setNetworkCapabilities(agentCapabilities, true);
        waitForIdle();
        waitForIdle();

        // Check that both the capability change and the owner UID have been modified.
        // The owner UID is -1 because it is visible only to the UID that owns the network.
        nc = mCm.getNetworkCapabilities(mWiFiNetworkAgent.getNetwork());
        nc = mCm.getNetworkCapabilities(mWiFiNetworkAgent.getNetwork());
        assertEquals(-1, nc.getOwnerUid());
        assertEquals(-1, nc.getOwnerUid());
        assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_CONGESTED));
        assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_CONGESTED));