mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-25 23:49:32 -05:00
Sync with @flamefire's Q_asb_2023-07
Signed-off-by: Tad <tad@spotco.us>
This commit is contained in:
parent
eef09ae519
commit
e627cdee05
@ -1,22 +1,25 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 8bfab8e6a99bc7d61362e6ee803756a2fab08646 Mon Sep 17 00:00:00 2001
|
||||||
From: "Nate(Qiang) Jiang" <qiangjiang@google.com>
|
From: "Nate(Qiang) Jiang" <qiangjiang@google.com>
|
||||||
Date: Wed, 26 Oct 2022 21:52:34 +0000
|
Date: Wed, 26 Oct 2022 21:52:34 +0000
|
||||||
Subject: [PATCH] Passpoint Add more check to limit the config size
|
Subject: [PATCH 01/11] [RESTRICT AUTOMERGE] Passpoint Add more check to limit
|
||||||
|
the config size
|
||||||
|
|
||||||
Bug: 245299920
|
Bug: 245299920
|
||||||
Test: atest con.android.server.wifi
|
Test: atest con.android.server.wifi
|
||||||
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:e1a80210f3f0391c989a2a86fd4aef739bf2574c)
|
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:e1a80210f3f0391c989a2a86fd4aef739bf2574c)
|
||||||
Merged-In: I97522ce3607547c10025caa107cd1a40455a9c5d
|
Merged-In: I97522ce3607547c10025caa107cd1a40455a9c5d
|
||||||
Change-Id: I97522ce3607547c10025caa107cd1a40455a9c5d
|
Change-Id: I97522ce3607547c10025caa107cd1a40455a9c5d
|
||||||
|
|
||||||
|
Change-Id: Id95fc30cb9f22276114ecef543d7a7e9e0c3459b
|
||||||
---
|
---
|
||||||
.../wifi/hotspot2/PasspointConfiguration.java | 59 +++++++++++++-
|
.../wifi/hotspot2/PasspointConfiguration.java | 47 ++++++++++-
|
||||||
.../net/wifi/hotspot2/pps/Credential.java | 10 ++-
|
.../net/wifi/hotspot2/pps/Credential.java | 10 ++-
|
||||||
.../android/net/wifi/hotspot2/pps/HomeSp.java | 79 ++++++++++++++++++-
|
.../android/net/wifi/hotspot2/pps/HomeSp.java | 79 ++++++++++++++++++-
|
||||||
.../hotspot2/PasspointConfigurationTest.java | 2 +-
|
.../hotspot2/PasspointConfigurationTest.java | 2 +-
|
||||||
4 files changed, 146 insertions(+), 4 deletions(-)
|
4 files changed, 134 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
diff --git a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
|
diff --git a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
|
||||||
index 9095b5d927a2..eff56acf4dfb 100644
|
index 9095b5d927a2..f88d6f6ca25a 100644
|
||||||
--- a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
|
--- a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
|
||||||
+++ b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
|
+++ b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
|
||||||
@@ -52,8 +52,42 @@ public final class PasspointConfiguration implements Parcelable {
|
@@ -52,8 +52,42 @@ public final class PasspointConfiguration implements Parcelable {
|
||||||
@ -45,7 +48,8 @@ index 9095b5d927a2..eff56acf4dfb 100644
|
|||||||
+ /**
|
+ /**
|
||||||
+ * Maximum bytes for a string entry like FQDN and friendly name.
|
+ * Maximum bytes for a string entry like FQDN and friendly name.
|
||||||
+ * @hide
|
+ * @hide
|
||||||
+ */
|
*/
|
||||||
|
- private static final int MAX_URL_BYTES = 1023;
|
||||||
+ public static final int MAX_STRING_LENGTH = 255;
|
+ public static final int MAX_STRING_LENGTH = 255;
|
||||||
+
|
+
|
||||||
+ /**
|
+ /**
|
||||||
@ -57,28 +61,15 @@ index 9095b5d927a2..eff56acf4dfb 100644
|
|||||||
+ /**
|
+ /**
|
||||||
+ * Organization Identifiers is 3 or 5 Octets. 24 or 36 bit.
|
+ * Organization Identifiers is 3 or 5 Octets. 24 or 36 bit.
|
||||||
+ * @hide
|
+ * @hide
|
||||||
*/
|
+ */
|
||||||
- private static final int MAX_URL_BYTES = 1023;
|
|
||||||
+ public static final long MAX_OI_VALUE = ((long) 1 << 40) - 1;
|
+ public static final long MAX_OI_VALUE = ((long) 1 << 40) - 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Integer value used for indicating null value in the Parcel.
|
* Integer value used for indicating null value in the Parcel.
|
||||||
@@ -572,7 +606,30 @@ public final class PasspointConfiguration implements Parcelable {
|
@@ -572,7 +606,18 @@ public final class PasspointConfiguration implements Parcelable {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (mAaaServerTrustedNames != null) {
|
|
||||||
+ if (mAaaServerTrustedNames.length > MAX_NUMBER_OF_ENTRIES) {
|
|
||||||
+ Log.d(TAG, "Too many AaaServerTrustedNames");
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+ for (String fqdn : mAaaServerTrustedNames) {
|
|
||||||
+ if (fqdn.getBytes(StandardCharsets.UTF_8).length > MAX_STRING_LENGTH) {
|
|
||||||
+ Log.d(TAG, "AaaServerTrustedNames is too long");
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (mSubscriptionType != null) {
|
+ if (mSubscriptionType != null) {
|
||||||
+ if (mSubscriptionType.getBytes(StandardCharsets.UTF_8).length > MAX_STRING_LENGTH) {
|
+ if (mSubscriptionType.getBytes(StandardCharsets.UTF_8).length > MAX_STRING_LENGTH) {
|
||||||
+ Log.d(TAG, "SubscriptionType is too long");
|
+ Log.d(TAG, "SubscriptionType is too long");
|
||||||
@ -241,3 +232,7 @@ index fc03e7eb6176..6b4f7b0cc51e 100644
|
|||||||
private static final int CERTIFICATE_FINGERPRINT_BYTES = 32;
|
private static final int CERTIFICATE_FINGERPRINT_BYTES = 32;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,102 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ioana Alexandru <aioana@google.com>
|
|
||||||
Date: Fri, 21 Apr 2023 15:39:22 +0000
|
|
||||||
Subject: [PATCH] Verify URI permissions for EXTRA_REMOTE_INPUT_HISTORY_ITEMS.
|
|
||||||
|
|
||||||
Also added the person URIs in the test, since they weren't being
|
|
||||||
checked.
|
|
||||||
|
|
||||||
Test: atest NotificationManagerServiceTest & tested with POC from bug
|
|
||||||
Bug: 276729064
|
|
||||||
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:e0d8602a0200ba92283463bd54cefcf97394bfa8)
|
|
||||||
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:63f8ce3efd9a564ae83f1de38791a6d67c5a8ddb)
|
|
||||||
Merged-In: I848545f7aee202495c515f47a32871a2cb6ae707
|
|
||||||
Change-Id: I848545f7aee202495c515f47a32871a2cb6ae707
|
|
||||||
---
|
|
||||||
core/java/android/app/Notification.java | 11 +++++++
|
|
||||||
.../NotificationManagerServiceTest.java | 32 +++++++++++++++++++
|
|
||||||
2 files changed, 43 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
|
|
||||||
index 3e75c52bf893..9fe3583df601 100644
|
|
||||||
--- a/core/java/android/app/Notification.java
|
|
||||||
+++ b/core/java/android/app/Notification.java
|
|
||||||
@@ -2454,6 +2454,17 @@ public class Notification implements Parcelable
|
|
||||||
if (extras.containsKey(EXTRA_BACKGROUND_IMAGE_URI)) {
|
|
||||||
visitor.accept(Uri.parse(extras.getString(EXTRA_BACKGROUND_IMAGE_URI)));
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ final RemoteInputHistoryItem[] history = (RemoteInputHistoryItem[])
|
|
||||||
+ extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS);
|
|
||||||
+ if (history != null) {
|
|
||||||
+ for (int i = 0; i < history.length; i++) {
|
|
||||||
+ RemoteInputHistoryItem item = history[i];
|
|
||||||
+ if (item.getUri() != null) {
|
|
||||||
+ visitor.accept(item.getUri());
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MessagingStyle.class.equals(getNotificationStyle()) && extras != null) {
|
|
||||||
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
|
|
||||||
index 6c1620751866..b2ce41f5b373 100755
|
|
||||||
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
|
|
||||||
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
|
|
||||||
@@ -93,6 +93,7 @@ import android.app.NotificationManager;
|
|
||||||
import android.app.PendingIntent;
|
|
||||||
import android.app.Person;
|
|
||||||
import android.app.RemoteInput;
|
|
||||||
+import android.app.RemoteInputHistoryItem;
|
|
||||||
import android.app.admin.DevicePolicyManagerInternal;
|
|
||||||
import android.app.usage.UsageStatsManagerInternal;
|
|
||||||
import android.companion.ICompanionDeviceManager;
|
|
||||||
@@ -3414,10 +3415,36 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
||||||
public void testVisitUris() throws Exception {
|
|
||||||
final Uri audioContents = Uri.parse("content://com.example/audio");
|
|
||||||
final Uri backgroundImage = Uri.parse("content://com.example/background");
|
|
||||||
+ final Icon personIcon1 = Icon.createWithContentUri("content://media/person1");
|
|
||||||
+ final Icon personIcon2 = Icon.createWithContentUri("content://media/person2");
|
|
||||||
+ final Icon personIcon3 = Icon.createWithContentUri("content://media/person3");
|
|
||||||
+ final Person person1 = new Person.Builder()
|
|
||||||
+ .setName("Messaging Person")
|
|
||||||
+ .setIcon(personIcon1)
|
|
||||||
+ .build();
|
|
||||||
+ final Person person2 = new Person.Builder()
|
|
||||||
+ .setName("People List Person 1")
|
|
||||||
+ .setIcon(personIcon2)
|
|
||||||
+ .build();
|
|
||||||
+ final Person person3 = new Person.Builder()
|
|
||||||
+ .setName("People List Person 2")
|
|
||||||
+ .setIcon(personIcon3)
|
|
||||||
+ .build();
|
|
||||||
+ final Uri historyUri1 = Uri.parse("content://com.example/history1");
|
|
||||||
+ final Uri historyUri2 = Uri.parse("content://com.example/history2");
|
|
||||||
+ final RemoteInputHistoryItem historyItem1 = new RemoteInputHistoryItem(null, historyUri1,
|
|
||||||
+ "a");
|
|
||||||
+ final RemoteInputHistoryItem historyItem2 = new RemoteInputHistoryItem(null, historyUri2,
|
|
||||||
+ "b");
|
|
||||||
|
|
||||||
Bundle extras = new Bundle();
|
|
||||||
extras.putParcelable(Notification.EXTRA_AUDIO_CONTENTS_URI, audioContents);
|
|
||||||
extras.putString(Notification.EXTRA_BACKGROUND_IMAGE_URI, backgroundImage.toString());
|
|
||||||
+ extras.putParcelable(Notification.EXTRA_MESSAGING_PERSON, person1);
|
|
||||||
+ extras.putParcelableArrayList(Notification.EXTRA_PEOPLE_LIST,
|
|
||||||
+ new ArrayList<>(Arrays.asList(person2, person3)));
|
|
||||||
+ extras.putParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS,
|
|
||||||
+ new RemoteInputHistoryItem[]{historyItem1, historyItem2});
|
|
||||||
|
|
||||||
Notification n = new Notification.Builder(mContext, "a")
|
|
||||||
.setContentTitle("notification with uris")
|
|
||||||
@@ -3429,6 +3456,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
||||||
n.visitUris(visitor);
|
|
||||||
verify(visitor, times(1)).accept(eq(audioContents));
|
|
||||||
verify(visitor, times(1)).accept(eq(backgroundImage));
|
|
||||||
+ verify(visitor, times(1)).accept(eq(personIcon1.getUri()));
|
|
||||||
+ verify(visitor, times(1)).accept(eq(personIcon2.getUri()));
|
|
||||||
+ verify(visitor, times(1)).accept(eq(personIcon3.getUri()));
|
|
||||||
+ verify(visitor, times(1)).accept(eq(historyUri1));
|
|
||||||
+ verify(visitor, times(1)).accept(eq(historyUri2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
@ -1,103 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Nate(Qiang) Jiang" <qiangjiang@google.com>
|
|
||||||
Date: Thu, 13 Apr 2023 19:25:51 +0000
|
|
||||||
Subject: [PATCH] DO NOT MERGE: Add pre-share key check for wapi
|
|
||||||
|
|
||||||
Bug: 275339978
|
|
||||||
Test: atest com.androi.server.wifi
|
|
||||||
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:07d112fb45449e06233b71e877e835084c76f220)
|
|
||||||
Merged-In: Ibd3ee52c5993a541abb7b373e4052091d13e9c4f
|
|
||||||
Change-Id: Ibd3ee52c5993a541abb7b373e4052091d13e9c4f
|
|
||||||
---
|
|
||||||
.../server/wifi/WifiConfigurationUtil.java | 4 ++
|
|
||||||
.../wifi/WifiConfigurationUtilTest.java | 41 +++++++++++++++++++
|
|
||||||
2 files changed, 45 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/service/java/com/android/server/wifi/WifiConfigurationUtil.java b/service/java/com/android/server/wifi/WifiConfigurationUtil.java
|
|
||||||
index b8992a011..2bb7b0dd2 100644
|
|
||||||
--- a/service/java/com/android/server/wifi/WifiConfigurationUtil.java
|
|
||||||
+++ b/service/java/com/android/server/wifi/WifiConfigurationUtil.java
|
|
||||||
@@ -701,6 +701,10 @@ public class WifiConfigurationUtil {
|
|
||||||
&& !validatePassword(config.preSharedKey, isAdd, false)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
+ if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WAPI_PSK)
|
|
||||||
+ && !validatePassword(config.preSharedKey, isAdd, false)) {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.OWE)) {
|
|
||||||
// PMF mandatory for OWE networks
|
|
||||||
if (!config.requirePMF) {
|
|
||||||
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
|
|
||||||
index 7173dae5b..aaa3f2605 100644
|
|
||||||
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
|
|
||||||
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
|
|
||||||
@@ -352,6 +352,18 @@ public class WifiConfigurationUtilTest {
|
|
||||||
assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Test
|
|
||||||
+ public void testValidateNegativeCases_BadAsciiPskLengthWapi() {
|
|
||||||
+ WifiConfiguration config = WifiConfigurationTestUtil.createWapiPskNetwork();
|
|
||||||
+ assertTrue(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+
|
|
||||||
+ config.preSharedKey = "\"abcdffeeretretyetreteteteabe34tetrertertrsraaaaaaaaaaa345eqwrweewq"
|
|
||||||
+ + "weqe\"";
|
|
||||||
+ assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+ config.preSharedKey = "\"454\"";
|
|
||||||
+ assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Verify that the validate method fails to validate WifiConfiguration with bad sae length.
|
|
||||||
*/
|
|
||||||
@@ -380,6 +392,15 @@ public class WifiConfigurationUtilTest {
|
|
||||||
assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Test
|
|
||||||
+ public void testValidateNegativeCases_MalformedAsciiPskStringWapi() {
|
|
||||||
+ WifiConfiguration config = WifiConfigurationTestUtil.createWapiPskNetwork();
|
|
||||||
+ assertTrue(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+
|
|
||||||
+ config.preSharedKey = "\"abcdfefeeretrety";
|
|
||||||
+ assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Verify that the validate method fails to validate WifiConfiguration with malformed sae
|
|
||||||
* string.
|
|
||||||
@@ -407,6 +428,17 @@ public class WifiConfigurationUtilTest {
|
|
||||||
assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Test
|
|
||||||
+ public void testValidateNegativeCases_BadHexPskLengthWapi() {
|
|
||||||
+ WifiConfiguration config = WifiConfigurationTestUtil.createWapiPskNetwork();
|
|
||||||
+ assertTrue(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+
|
|
||||||
+ config.preSharedKey = "abcd123456788990013453445345465465476546";
|
|
||||||
+ assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+ config.preSharedKey = "";
|
|
||||||
+ assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Verify that the validate method fails to validate WifiConfiguration with malformed psk
|
|
||||||
* string.
|
|
||||||
@@ -420,6 +452,15 @@ public class WifiConfigurationUtilTest {
|
|
||||||
assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Test
|
|
||||||
+ public void testValidateNegativeCases_MalformedHexPskStringWapi() {
|
|
||||||
+ WifiConfiguration config = WifiConfigurationTestUtil.createWapiPskNetwork();
|
|
||||||
+ assertTrue(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+
|
|
||||||
+ config.preSharedKey = "adbdfgretrtyrtyrty";
|
|
||||||
+ assertFalse(WifiConfigurationUtil.validate(config, WifiConfigurationUtil.VALIDATE_FOR_ADD));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Verify that the validate method fails to validate WifiConfiguration with malformed sae
|
|
||||||
* string.
|
|
@ -0,0 +1,240 @@
|
|||||||
|
From 561ce2bb694a951fea597ad2e19844af2792186a Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Nate(Qiang) Jiang" <qiangjiang@google.com>
|
||||||
|
Date: Wed, 12 Apr 2023 18:38:15 +0000
|
||||||
|
Subject: [PATCH] DO NOT MERGE: Limit the number of Passpoint per App
|
||||||
|
|
||||||
|
Reject the suggestion passpoint with ServiceFriendlyNames
|
||||||
|
|
||||||
|
Bug: 274445194
|
||||||
|
Test: atest com.android.server.wifi
|
||||||
|
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:b081fc592709895f0e745ad33b41174b3b2ad399)
|
||||||
|
Merged-In: I30606e9bb4eba54b5b9111de4982c0cfb565b3dc
|
||||||
|
Change-Id: I30606e9bb4eba54b5b9111de4982c0cfb565b3dc
|
||||||
|
|
||||||
|
Change-Id: I7df5e55e777189bdc11765d11cb5e428fe928faa
|
||||||
|
---
|
||||||
|
.../wifi/hotspot2/PasspointManager.java | 6 ++
|
||||||
|
.../wifi/hotspot2/PasspointManagerTest.java | 56 ++++++++++---------
|
||||||
|
2 files changed, 37 insertions(+), 25 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
|
||||||
|
index 0666943c3..8916976ea 100644
|
||||||
|
--- a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
|
||||||
|
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
|
||||||
|
@@ -374,6 +374,12 @@ public class PasspointManager {
|
||||||
|
Log.e(TAG, "UID " + uid + " not visible to the current user");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
+ if (getPasspointProviderWithPackage(packageName).size()
|
||||||
|
+ >= WifiManager.NETWORK_SUGGESTIONS_MAX_PER_APP) {
|
||||||
|
+ Log.e(TAG, "packageName " + packageName + " has too many passpoint with exceed the "
|
||||||
|
+ + "limitation");
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// For Hotspot 2.0 Release 1, the CA Certificate must be trusted by one of the pre-loaded
|
||||||
|
// public CAs in the system key store on the device. Since the provisioning method
|
||||||
|
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
|
||||||
|
index 618f1c3d5..2b02ed508 100644
|
||||||
|
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
|
||||||
|
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
|
||||||
|
@@ -42,6 +42,7 @@ import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
import static org.mockito.MockitoAnnotations.initMocks;
|
||||||
|
|
||||||
|
+import android.app.ActivityManager;
|
||||||
|
import android.app.AppOpsManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
@@ -178,6 +179,7 @@ public class PasspointManagerTest {
|
||||||
|
@Mock TelephonyManager mDataTelephonyManager;
|
||||||
|
@Mock SubscriptionManager mSubscriptionManager;
|
||||||
|
@Mock WifiPermissionsUtil mWifiPermissionsUtil;
|
||||||
|
+ @Mock ActivityManager mActivityManager;
|
||||||
|
|
||||||
|
Handler mHandler;
|
||||||
|
TestLooper mLooper;
|
||||||
|
@@ -203,6 +205,7 @@ public class PasspointManagerTest {
|
||||||
|
any(PasspointManager.class), any(WifiMetrics.class)))
|
||||||
|
.thenReturn(mPasspointProvisioner);
|
||||||
|
when(mContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
|
||||||
|
+ when(mContext.getSystemService(ActivityManager.class)).thenReturn(mActivityManager);
|
||||||
|
when(mWifiInjector.getClientModeImpl()).thenReturn(mClientModeImpl);
|
||||||
|
when(mWifiPermissionsUtil.doesUidBelongToCurrentUser(anyInt())).thenReturn(true);
|
||||||
|
mLooper = new TestLooper();
|
||||||
|
@@ -268,11 +271,6 @@ public class PasspointManagerTest {
|
||||||
|
homeSp.setFqdn(fqdn);
|
||||||
|
homeSp.setFriendlyName(friendlyName);
|
||||||
|
config.setHomeSp(homeSp);
|
||||||
|
- Map<String, String> friendlyNames = new HashMap<>();
|
||||||
|
- friendlyNames.put("en", friendlyName);
|
||||||
|
- friendlyNames.put("kr", friendlyName + 1);
|
||||||
|
- friendlyNames.put("jp", friendlyName + 2);
|
||||||
|
- config.setServiceFriendlyNames(friendlyNames);
|
||||||
|
Credential credential = new Credential();
|
||||||
|
credential.setRealm(TEST_REALM);
|
||||||
|
credential.setCaCertificate(FakeKeys.CA_CERT0);
|
||||||
|
@@ -315,8 +313,16 @@ public class PasspointManagerTest {
|
||||||
|
* @return {@link PasspointProvider}
|
||||||
|
*/
|
||||||
|
private PasspointProvider addTestProvider(String fqdn, String friendlyName,
|
||||||
|
- String packageName) {
|
||||||
|
+ String packageName,
|
||||||
|
+ boolean addServiceFriendlyNames) {
|
||||||
|
PasspointConfiguration config = createTestConfigWithUserCredential(fqdn, friendlyName);
|
||||||
|
+ if (addServiceFriendlyNames) {
|
||||||
|
+ Map<String, String> friendlyNames = new HashMap<>();
|
||||||
|
+ friendlyNames.put("en", friendlyName);
|
||||||
|
+ friendlyNames.put("kr", friendlyName + 1);
|
||||||
|
+ friendlyNames.put("jp", friendlyName + 2);
|
||||||
|
+ config.setServiceFriendlyNames(friendlyNames);
|
||||||
|
+ }
|
||||||
|
PasspointProvider provider = createMockProvider(config);
|
||||||
|
when(mObjectFactory.makePasspointProvider(eq(config), eq(mWifiKeyStore),
|
||||||
|
eq(mSimAccessor), anyLong(), eq(TEST_CREATOR_UID), eq(TEST_PACKAGE))).thenReturn(
|
||||||
|
@@ -738,7 +744,7 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void matchProviderWithAnqpCacheMissed() throws Exception {
|
||||||
|
- addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
|
||||||
|
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(null);
|
||||||
|
assertNull(mManager.matchProvider(createTestScanResult()));
|
||||||
|
@@ -754,7 +760,7 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void matchProviderAsHomeProvider() throws Exception {
|
||||||
|
- PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
ANQPData entry = new ANQPData(mClock, null);
|
||||||
|
|
||||||
|
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
|
||||||
|
@@ -773,7 +779,7 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void matchProviderAsRoamingProvider() throws Exception {
|
||||||
|
- PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
ANQPData entry = new ANQPData(mClock, null);
|
||||||
|
|
||||||
|
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
|
||||||
|
@@ -792,7 +798,7 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void matchProviderWithNoMatch() throws Exception {
|
||||||
|
- PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
ANQPData entry = new ANQPData(mClock, null);
|
||||||
|
|
||||||
|
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
|
||||||
|
@@ -852,16 +858,16 @@ public class PasspointManagerTest {
|
||||||
|
InformationElementUtil.class).startMocking();
|
||||||
|
try {
|
||||||
|
PasspointProvider providerHome = addTestProvider(TEST_FQDN + 0, TEST_FRIENDLY_NAME,
|
||||||
|
- TEST_PACKAGE);
|
||||||
|
+ TEST_PACKAGE, false);
|
||||||
|
WifiConfiguration homeWifiConfiguration = new WifiConfiguration();
|
||||||
|
homeWifiConfiguration.FQDN = TEST_FQDN + 0;
|
||||||
|
homeWifiConfiguration.isHomeProviderNetwork = true;
|
||||||
|
PasspointProvider providerRoaming = addTestProvider(TEST_FQDN + 1, TEST_FRIENDLY_NAME,
|
||||||
|
- TEST_PACKAGE);
|
||||||
|
+ TEST_PACKAGE, false);
|
||||||
|
WifiConfiguration roamingWifiConfiguration = new WifiConfiguration();
|
||||||
|
roamingWifiConfiguration.FQDN = TEST_FQDN + 1;
|
||||||
|
PasspointProvider providerNone = addTestProvider(TEST_FQDN + 2, TEST_FRIENDLY_NAME,
|
||||||
|
- TEST_PACKAGE);
|
||||||
|
+ TEST_PACKAGE, false);
|
||||||
|
ANQPData entry = new ANQPData(mClock, null);
|
||||||
|
InformationElementUtil.Vsa vsa = new InformationElementUtil.Vsa();
|
||||||
|
vsa.anqpDomainID = TEST_ANQP_DOMAIN_ID2;
|
||||||
|
@@ -905,15 +911,15 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void getWifiConfigsForPasspointProfiles() {
|
||||||
|
- PasspointProvider provider1 = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ PasspointProvider provider1 = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
WifiConfiguration wifiConfiguration1 = new WifiConfiguration();
|
||||||
|
wifiConfiguration1.FQDN = TEST_FQDN;
|
||||||
|
PasspointProvider provider2 = addTestProvider(TEST_FQDN + 1, TEST_FRIENDLY_NAME,
|
||||||
|
- TEST_PACKAGE);
|
||||||
|
+ TEST_PACKAGE, false);
|
||||||
|
WifiConfiguration wifiConfiguration2 = new WifiConfiguration();
|
||||||
|
wifiConfiguration2.FQDN = TEST_FQDN + 1;
|
||||||
|
PasspointProvider provider3 = addTestProvider(TEST_FQDN + 2, TEST_FRIENDLY_NAME,
|
||||||
|
- TEST_PACKAGE);
|
||||||
|
+ TEST_PACKAGE, false);
|
||||||
|
WifiConfiguration wifiConfiguration3 = new WifiConfiguration();
|
||||||
|
wifiConfiguration3.FQDN = TEST_FQDN + 2;
|
||||||
|
lenient().when(provider1.getWifiConfig()).thenReturn(wifiConfiguration1);
|
||||||
|
@@ -1114,9 +1120,9 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void getMatchingPasspointConfigsForOsuProvidersWithMatch() {
|
||||||
|
- PasspointProvider provider1 = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ PasspointProvider provider1 = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, true);
|
||||||
|
PasspointProvider provider2 = addTestProvider(TEST_FQDN2, TEST_FRIENDLY_NAME2,
|
||||||
|
- TEST_PACKAGE);
|
||||||
|
+ TEST_PACKAGE, true);
|
||||||
|
|
||||||
|
List<OsuProvider> osuProviders = new ArrayList<>();
|
||||||
|
Map<String, String> friendlyNames = new HashMap<>();
|
||||||
|
@@ -1143,8 +1149,8 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void getMatchingPasspointConfigsForOsuProvidersWitNoMatch() {
|
||||||
|
- addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
- addTestProvider(TEST_FQDN2, TEST_FRIENDLY_NAME2, TEST_PACKAGE);
|
||||||
|
+ addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
+ addTestProvider(TEST_FQDN2, TEST_FRIENDLY_NAME2, TEST_PACKAGE, false);
|
||||||
|
|
||||||
|
List<OsuProvider> osuProviders = new ArrayList<>();
|
||||||
|
|
||||||
|
@@ -1444,7 +1450,7 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void providerNetworkConnectedFirstTime() throws Exception {
|
||||||
|
- PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
when(provider.getHasEverConnected()).thenReturn(false);
|
||||||
|
mManager.onPasspointNetworkConnected(TEST_FQDN);
|
||||||
|
verify(provider).setHasEverConnected(eq(true));
|
||||||
|
@@ -1459,7 +1465,7 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void providerNetworkConnectedNotFirstTime() throws Exception {
|
||||||
|
- PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
when(provider.getHasEverConnected()).thenReturn(true);
|
||||||
|
mManager.onPasspointNetworkConnected(TEST_FQDN);
|
||||||
|
verify(provider, never()).setHasEverConnected(anyBoolean());
|
||||||
|
@@ -1473,7 +1479,7 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void updateMetrics() {
|
||||||
|
- PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ PasspointProvider provider = addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
ArgumentCaptor<Map<String, PasspointProvider>> argCaptor = ArgumentCaptor.forClass(
|
||||||
|
Map.class);
|
||||||
|
// Provider have not provided a successful network connection.
|
||||||
|
@@ -1601,7 +1607,7 @@ public class PasspointManagerTest {
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void verifyHasProviderForCarrierWithNoMatch() {
|
||||||
|
- addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
|
||||||
|
assertFalse(mManager.hasCarrierProvider(TEST_MCC_MNC));
|
||||||
|
}
|
||||||
|
@@ -1688,7 +1694,7 @@ public class PasspointManagerTest {
|
||||||
|
WifiConfiguration currentConfiguration = WifiConfigurationTestUtil.createPasspointNetwork();
|
||||||
|
currentConfiguration.FQDN = TEST_FQDN;
|
||||||
|
when(mClientModeImpl.getCurrentWifiConfiguration()).thenReturn(currentConfiguration);
|
||||||
|
- addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE);
|
||||||
|
+ addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false);
|
||||||
|
|
||||||
|
verify(mAppOpsManager).startWatchingMode(eq(OPSTR_CHANGE_WIFI_STATE), eq(TEST_PACKAGE),
|
||||||
|
mAppOpChangedListenerCaptor.capture());
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -141,16 +141,15 @@ git fetch https://github.com/LineageOS/android_external_zlib refs/changes/70/352
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if enterAndClear "frameworks/base"; then
|
if enterAndClear "frameworks/base"; then
|
||||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/360952-backport.patch"; #R_asb_2023-07 Passpoint Add more check to limit the config size #XXX: Passpoint 2.0 is API30+
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360952-backport.patch"; #R_asb_2023-07 Passpoint Add more check to limit the config size
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_base/360953-backport.patch"; #R_asb_2023-07 Sanitize VPN label to prevent HTML injection
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360953-backport.patch"; #R_asb_2023-07 Sanitize VPN label to prevent HTML injection
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_base/360954.patch"; #R_asb_2023-07 Limit the number of supported v1 and v2 signers
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360954.patch"; #R_asb_2023-07 Limit the number of supported v1 and v2 signers
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_base/360955.patch"; #R_asb_2023-07 Import translations.
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360955.patch"; #R_asb_2023-07 Import translations.
|
||||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/360956.patch"; #R_asb_2023-07 Add size check on PPS#policy #XXX: depends on 360952
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360956.patch"; #R_asb_2023-07 Add size check on PPS#policy
|
||||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/360957.patch"; #R_asb_2023-07 Limit the ServiceFriendlyNames #XXX: depends on 360952
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360957.patch"; #R_asb_2023-07 Limit the ServiceFriendlyNames
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_base/360958-backport.patch"; #R_asb_2023-07 Only allow NEW_TASK flag when adjusting pending intents
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360958-backport.patch"; #R_asb_2023-07 Only allow NEW_TASK flag when adjusting pending intents
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_base/360959.patch"; #R_asb_2023-07 Dismiss keyguard when simpin auth'd and security method is none.
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360959.patch"; #R_asb_2023-07 Dismiss keyguard when simpin auth'd and security method is none.
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_base/360960.patch"; #R_asb_2023-07 Increase notification channel limit.
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360960.patch"; #R_asb_2023-07 Increase notification channel limit.
|
||||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/360961-backport.patch"; #R_asb_2023-07 Verify URI permissions for EXTRA_REMOTE_INPUT_HISTORY_ITEMS. #XXX: RemoteInputHistoryItem doesn't exist
|
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_base/360962-backport.patch"; #R_asb_2023-07 Truncate ShortcutInfo Id
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360962-backport.patch"; #R_asb_2023-07 Truncate ShortcutInfo Id
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_base/360963.patch"; #R_asb_2023-07 Visit URIs in landscape/portrait custom remote views.
|
applyPatch "$DOS_PATCHES/android_frameworks_base/360963.patch"; #R_asb_2023-07 Visit URIs in landscape/portrait custom remote views.
|
||||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/272645.patch"; #ten-bt-sbc-hd-dualchannel: Add CHANNEL_MODE_DUAL_CHANNEL constant (ValdikSS)
|
#applyPatch "$DOS_PATCHES/android_frameworks_base/272645.patch"; #ten-bt-sbc-hd-dualchannel: Add CHANNEL_MODE_DUAL_CHANNEL constant (ValdikSS)
|
||||||
@ -223,7 +222,7 @@ fi;
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if enterAndClear "frameworks/opt/net/wifi"; then
|
if enterAndClear "frameworks/opt/net/wifi"; then
|
||||||
#applyPatch "$DOS_PATCHES/android_frameworks_opt_net_wifi/360964-backport.patch"; #R_asb_2023-07 Add pre-share key check for wapi #XXX: WAPI is API30+
|
applyPatch "$DOS_PATCHES/android_frameworks_opt_net_wifi/360965-backport.patch"; #R_asb_2023-07 Limit the number of Passpoint per App
|
||||||
if [ "$DOS_GRAPHENE_CONSTIFY" = true ]; then applyPatch "$DOS_PATCHES/android_frameworks_opt_net_wifi/0001-constify_JNINativeMethod.patch"; fi; #Constify JNINativeMethod tables (GrapheneOS)
|
if [ "$DOS_GRAPHENE_CONSTIFY" = true ]; then applyPatch "$DOS_PATCHES/android_frameworks_opt_net_wifi/0001-constify_JNINativeMethod.patch"; fi; #Constify JNINativeMethod tables (GrapheneOS)
|
||||||
applyPatch "$DOS_PATCHES/android_frameworks_opt_net_wifi/0002-Random_MAC.patch"; #Add support for always generating new random MAC (GrapheneOS)
|
applyPatch "$DOS_PATCHES/android_frameworks_opt_net_wifi/0002-Random_MAC.patch"; #Add support for always generating new random MAC (GrapheneOS)
|
||||||
fi;
|
fi;
|
||||||
|
Loading…
Reference in New Issue
Block a user