From 426311bcb5b3e4e3d342711fdb196531207815b9 Mon Sep 17 00:00:00 2001 From: markchien Date: Fri, 9 Aug 2019 21:43:38 +0800 Subject: [PATCH] Don't allow upstream if entitlement don't know any downstream In case tethering donwstream is setup but don't ask EntitlementManager to run provisioning. Cellular upstream should not be allowed if EntilementManager don't have any donwstream record. Bug: 134649258 Test: -build, flash, boot -manual test with carrier SIM Change-Id: I609722c79f0a45a1c2164d39721ef5883e436feb --- .../server/connectivity/tethering/EntitlementManager.java | 6 ++++++ .../connectivity/tethering/EntitlementManagerTest.java | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/services/core/java/com/android/server/connectivity/tethering/EntitlementManager.java b/services/core/java/com/android/server/connectivity/tethering/EntitlementManager.java index 836f1e64aa9ce..f952bcef5606f 100644 --- a/services/core/java/com/android/server/connectivity/tethering/EntitlementManager.java +++ b/services/core/java/com/android/server/connectivity/tethering/EntitlementManager.java @@ -161,6 +161,12 @@ public class EntitlementManager { * Check if cellular upstream is permitted. */ public boolean isCellularUpstreamPermitted() { + // If provisioning is required and EntitlementManager don't know any downstream, + // cellular upstream should not be allowed. + final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration(); + if (mCurrentTethers.size() == 0 && isTetherProvisioningRequired(config)) { + return false; + } return mCellularUpstreamPermitted; } diff --git a/tests/net/java/com/android/server/connectivity/tethering/EntitlementManagerTest.java b/tests/net/java/com/android/server/connectivity/tethering/EntitlementManagerTest.java index 2b2e8a72ab040..5217e26a40efb 100644 --- a/tests/net/java/com/android/server/connectivity/tethering/EntitlementManagerTest.java +++ b/tests/net/java/com/android/server/connectivity/tethering/EntitlementManagerTest.java @@ -405,6 +405,13 @@ public final class EntitlementManagerTest { } + @Test + public void verifyPermissionWhenProvisioningNotStarted() { + assertTrue(mEnMgr.isCellularUpstreamPermitted()); + setupForRequiredProvisioning(); + assertFalse(mEnMgr.isCellularUpstreamPermitted()); + } + @Test public void testRunTetherProvisioning() { setupForRequiredProvisioning();