Merge Android 12 QPR1
Bug: 210511427
Merged-In: I7361e4335701c8bdb13f817ecdc1530830eb86e0
Change-Id: I179a7841b24a81bc566f97b6b2b1a0b9604aae6d
diff --git a/service/java/com/android/server/wifi/HalDeviceManager.java b/service/java/com/android/server/wifi/HalDeviceManager.java
index 5462bb9..1f0d150 100644
--- a/service/java/com/android/server/wifi/HalDeviceManager.java
+++ b/service/java/com/android/server/wifi/HalDeviceManager.java
@@ -1522,9 +1522,13 @@
@Override
public void onSubsystemRestart(WifiStatus status) throws RemoteException {
+ Log.i(TAG, "onSubsystemRestart");
mEventHandler.post(() -> {
+ Log.i(TAG, "IWifiEventCallback.onSubsystemRestart: " + statusString(status));
synchronized (mLock) {
+ Log.i(TAG, "Attempting to invoke mSubsystemRestartListener");
for (SubsystemRestartListenerProxy cb : mSubsystemRestartListener) {
+ Log.i(TAG, "Invoking mSubsystemRestartListener");
cb.action();
}
}
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index f7a51a5..4e33614 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -2447,6 +2447,24 @@
String featureId, boolean callerNetworksOnly) {
enforceAccessPermission();
int callingUid = Binder.getCallingUid();
+ // bypass shell: can get various pkg name
+ // also bypass if caller is only retrieving networks added by itself
+ if (callingUid != Process.SHELL_UID && callingUid != Process.ROOT_UID) {
+ mWifiPermissionsUtil.checkPackage(callingUid, packageName);
+ if (!callerNetworksOnly) {
+ long ident = Binder.clearCallingIdentity();
+ try {
+ mWifiPermissionsUtil.enforceCanAccessScanResults(packageName, featureId,
+ callingUid, null);
+ } catch (SecurityException e) {
+ Log.w(TAG, "Permission violation - getConfiguredNetworks not allowed for uid="
+ + callingUid + ", packageName=" + packageName + ", reason=" + e);
+ return new ParceledListSlice<>(new ArrayList<>());
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+ }
boolean isDeviceOrProfileOwner = isDeviceOrProfileOwner(callingUid, packageName);
boolean isCarrierApp = mWifiInjector.makeTelephonyManager()
.checkCarrierPrivilegesForPackageAnyPhone(packageName)
@@ -2459,22 +2477,6 @@
"Not a DO, PO, carrier or privileged app");
}
}
- // bypass shell: can get various pkg name
- // also bypass if caller is only retrieving networks added by itself
- if (callingUid != Process.SHELL_UID && callingUid != Process.ROOT_UID
- && !callerNetworksOnly) {
- long ident = Binder.clearCallingIdentity();
- try {
- mWifiPermissionsUtil.enforceCanAccessScanResults(packageName, featureId,
- callingUid, null);
- } catch (SecurityException e) {
- Log.w(TAG, "Permission violation - getConfiguredNetworks not allowed for uid="
- + callingUid + ", packageName=" + packageName + ", reason=" + e);
- return new ParceledListSlice<>(new ArrayList<>());
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
boolean isTargetSdkLessThanQOrPrivileged = isTargetSdkLessThanQOrPrivileged(
packageName, Binder.getCallingPid(), callingUid);
if (!isTargetSdkLessThanQOrPrivileged && !isCarrierApp) {
@@ -5068,6 +5070,7 @@
throw new IllegalArgumentException("listener must not be null");
}
final int uid = Binder.getCallingUid();
+ mWifiPermissionsUtil.checkPackage(uid, packageName);
enforceAccessPermission();
enforceLocationPermission(packageName, featureId, uid);
if (isVerboseLoggingEnabled()) {
diff --git a/service/java/com/android/server/wifi/rtt/RttServiceImpl.java b/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
index c3267cc..d55c46a 100644
--- a/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
+++ b/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
@@ -426,6 +426,7 @@
// permission checks
enforceAccessPermission();
enforceChangePermission();
+ mWifiPermissionsUtil.checkPackage(uid, callingPackage);
mWifiPermissionsUtil.enforceFineLocationPermission(callingPackage, callingFeatureId, uid);
final WorkSource ws;