diff options
author | Paul Jensen <pauljensen@google.com> | 2015-08-28 12:00:15 -0400 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2015-10-21 12:01:28 -0700 |
commit | c0a4704f79728a9ae2832b9422a64467b035ee74 (patch) | |
tree | 355ddee7bd0677b658a86200a3cc27a358e71cf5 | |
parent | 1689d7a7c81115bea0d55ea850ceb6b0834893aa (diff) | |
download | base-c0a4704f79728a9ae2832b9422a64467b035ee74.tar.gz |
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 aae613d96134245af7c55976731a49fa59e77470)
-rw-r--r-- | core/java/android/net/NetworkCapabilities.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java index 76c24bade95d..072088589e59 100644 --- a/core/java/android/net/NetworkCapabilities.java +++ b/core/java/android/net/NetworkCapabilities.java @@ -281,8 +281,12 @@ public final class NetworkCapabilities implements Parcelable { public void maybeMarkCapabilitiesRestricted() { // If all the capabilities are typically provided by restricted networks, conclude that this // 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); + } } /** |