Don't mark NetworkRequests restricted when they don't have restricted caps
Requests without NET_CAPABILITIES_INTERNET and just the default network
capabilities should not be marked restricted. Without this fix apps
can hit permissions exceptions if they inadvertently make requests
without NET_CAPABILITIES_INTERNET.
Bug:23164917
Change-Id: I4c7136821315bcb05dfc42ffbc505a5d4f6109e6
(cherry picked from commit 5d87922526)
This commit is contained in:
@@ -285,9 +285,13 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
public void maybeMarkCapabilitiesRestricted() {
|
public void maybeMarkCapabilitiesRestricted() {
|
||||||
// If all the capabilities are typically provided by restricted networks, conclude that this
|
// If all the capabilities are typically provided by restricted networks, conclude that this
|
||||||
// network is restricted.
|
// network is restricted.
|
||||||
if ((mNetworkCapabilities & ~(DEFAULT_CAPABILITIES | RESTRICTED_CAPABILITIES)) == 0)
|
if ((mNetworkCapabilities & ~(DEFAULT_CAPABILITIES | RESTRICTED_CAPABILITIES)) == 0 &&
|
||||||
|
// Must have at least some restricted capabilities, otherwise a request for an
|
||||||
|
// internet-less network will get marked restricted.
|
||||||
|
(mNetworkCapabilities & RESTRICTED_CAPABILITIES) != 0) {
|
||||||
removeCapability(NET_CAPABILITY_NOT_RESTRICTED);
|
removeCapability(NET_CAPABILITY_NOT_RESTRICTED);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representing the transport type. Apps should generally not care about transport. A
|
* Representing the transport type. Apps should generally not care about transport. A
|
||||||
|
|||||||
Reference in New Issue
Block a user