Merge "Move sensitive field parceling bool to constructor" into rvc-dev

This commit is contained in:
Remi NGUYEN VAN
2020-03-19 01:32:48 +00:00
committed by Android (Google) Code Review
3 changed files with 16 additions and 19 deletions

View File

@@ -167,7 +167,19 @@ public final class LinkProperties implements Parcelable {
this(source, false /* parcelSensitiveFields */); 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; mParcelSensitiveFields = parcelSensitiveFields;
if (source == null) return; if (source == null) return;
mIfaceName = source.mIfaceName; mIfaceName = source.mIfaceName;
@@ -1582,22 +1594,6 @@ public final class LinkProperties implements Parcelable {
return mCaptivePortalData; 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 * Compares this {@code LinkProperties} instance against the target
* LinkProperties in {@code obj}. Two LinkPropertieses are equal if * LinkProperties in {@code obj}. Two LinkPropertieses are equal if

View File

@@ -1713,7 +1713,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
if (checkSettingsPermission(callerPid, callerUid)) { if (checkSettingsPermission(callerPid, callerUid)) {
return lp.makeSensitiveFieldsParcelingCopy(); return new LinkProperties(lp, true /* parcelSensitiveFields */);
} }
final LinkProperties newLp = new LinkProperties(lp); final LinkProperties newLp = new LinkProperties(lp);

View File

@@ -1028,7 +1028,8 @@ public class LinkPropertiesTest {
source.setCaptivePortalApiUrl(CAPPORT_API_URL); source.setCaptivePortalApiUrl(CAPPORT_API_URL);
source.setCaptivePortalData((CaptivePortalData) getCaptivePortalData()); source.setCaptivePortalData((CaptivePortalData) getCaptivePortalData());
source.setDhcpServerAddress((Inet4Address) GATEWAY1); 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. // Verify that without using a sensitiveFieldsParcelingCopy, sensitive fields are cleared.
final LinkProperties sanitized = new LinkProperties(source); final LinkProperties sanitized = new LinkProperties(source);