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

Commit 0acf9103 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Remi NGUYEN VAN
Browse files

Move sensitive field parceling bool to constructor

This addresses API review comments recommending to use a copy
constructor with additional parameters instead of a dedicated method.
makeSensitiveFieldsParcelingCopy becomes LinkProperties(base, true).

Bug: 150877475
Test: atest FrameworksNetTests NetworkStackTests NetworkStackNextTests
Merged-In: Ib145ca7f36dcbee6ef47d09862a181fc04a28f03
(cherry picked from commit bf091021)

Change-Id: I98449430ca5b11f5a62ba43683663bd82650e817
parent 1f074882
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6219,6 +6219,7 @@ package android.net {
  public final class LinkProperties implements android.os.Parcelable {
    ctor public LinkProperties(@Nullable android.net.LinkProperties);
    ctor public LinkProperties(@Nullable android.net.LinkProperties, boolean);
    method public boolean addDnsServer(@NonNull java.net.InetAddress);
    method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
    method public boolean addPcscfServer(@NonNull java.net.InetAddress);
@@ -6241,7 +6242,6 @@ package android.net {
    method public boolean isIpv6Provisioned();
    method public boolean isProvisioned();
    method public boolean isReachable(@NonNull java.net.InetAddress);
    method @NonNull public android.net.LinkProperties makeSensitiveFieldsParcelingCopy();
    method public boolean removeDnsServer(@NonNull java.net.InetAddress);
    method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
    method public boolean removeRoute(@NonNull android.net.RouteInfo);
+1 −1
Original line number Diff line number Diff line
@@ -1792,6 +1792,7 @@ package android.net {

  public final class LinkProperties implements android.os.Parcelable {
    ctor public LinkProperties(@Nullable android.net.LinkProperties);
    ctor public LinkProperties(@Nullable android.net.LinkProperties, boolean);
    method public boolean addDnsServer(@NonNull java.net.InetAddress);
    method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
    method @Nullable public android.net.Uri getCaptivePortalApiUrl();
@@ -1806,7 +1807,6 @@ package android.net {
    method public boolean isIpv6Provisioned();
    method public boolean isProvisioned();
    method public boolean isReachable(@NonNull java.net.InetAddress);
    method @NonNull public android.net.LinkProperties makeSensitiveFieldsParcelingCopy();
    method public boolean removeDnsServer(@NonNull java.net.InetAddress);
    method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
    method public boolean removeRoute(@NonNull android.net.RouteInfo);
+13 −17
Original line number Diff line number Diff line
@@ -167,7 +167,19 @@ public final class LinkProperties implements Parcelable {
        this(source, false /* parcelSensitiveFields */);
    }

    private LinkProperties(@Nullable LinkProperties source, boolean parcelSensitiveFields) {
    /**
     * Create a copy of a {@link LinkProperties} that may preserve fields that were set
     * based on the permissions of the process that originally received it.
     *
     * <p>By default {@link LinkProperties} does not preserve such fields during parceling, as
     * they should not be shared outside of the process that receives them without appropriate
     * checks.
     * @param parcelSensitiveFields Whether the sensitive fields should be kept when parceling
     * @hide
     */
    @SystemApi
    @TestApi
    public LinkProperties(@Nullable LinkProperties source, boolean parcelSensitiveFields) {
        mParcelSensitiveFields = parcelSensitiveFields;
        if (source == null) return;
        mIfaceName = source.mIfaceName;
@@ -1560,22 +1572,6 @@ public final class LinkProperties implements Parcelable {
        return mCaptivePortalData;
    }

    /**
     * Create a copy of this {@link LinkProperties} that will preserve fields that were set
     * based on the permissions of the process that received this {@link LinkProperties}.
     *
     * <p>By default {@link LinkProperties} does not preserve such fields during parceling, as
     * they should not be shared outside of the process that receives them without appropriate
     * checks.
     * @hide
     */
    @SystemApi
    @TestApi
    @NonNull
    public LinkProperties makeSensitiveFieldsParcelingCopy() {
        return new LinkProperties(this, true /* parcelSensitiveFields */);
    }

    /**
     * Compares this {@code LinkProperties} instance against the target
     * LinkProperties in {@code obj}. Two LinkPropertieses are equal if
+1 −1
Original line number Diff line number Diff line
@@ -1710,7 +1710,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        }

        if (checkSettingsPermission(callerPid, callerUid)) {
            return lp.makeSensitiveFieldsParcelingCopy();
            return new LinkProperties(lp, true /* parcelSensitiveFields */);
        }

        final LinkProperties newLp = new LinkProperties(lp);
+2 −1
Original line number Diff line number Diff line
@@ -1028,7 +1028,8 @@ public class LinkPropertiesTest {
        source.setCaptivePortalApiUrl(CAPPORT_API_URL);
        source.setCaptivePortalData((CaptivePortalData) getCaptivePortalData());
        source.setDhcpServerAddress((Inet4Address) GATEWAY1);
        assertParcelSane(source.makeSensitiveFieldsParcelingCopy(), 18 /* fieldCount */);
        assertParcelSane(new LinkProperties(source, true /* parcelSensitiveFields */),
                18 /* fieldCount */);

        // Verify that without using a sensitiveFieldsParcelingCopy, sensitive fields are cleared.
        final LinkProperties sanitized = new LinkProperties(source);