Merge the 2021-08-05 SPL branch from AOSP-Partner
* security-aosp-pi-release:
Add permission for the broadcast intent with SIP profiles for security purpose.
Change-Id: Ie10f50d080c106212e0c69e296d48edc9359d2b2
diff --git a/src/java/android/net/sip/SipAudioCall.java b/src/java/android/net/sip/SipAudioCall.java
index ea943e9..6e28a79 100644
--- a/src/java/android/net/sip/SipAudioCall.java
+++ b/src/java/android/net/sip/SipAudioCall.java
@@ -833,10 +833,14 @@
private void grabWifiHighPerfLock() {
if (mWifiHighPerfLock == null) {
if (DBG) log("grabWifiHighPerfLock:");
- mWifiHighPerfLock = ((WifiManager)
- mContext.getSystemService(Context.WIFI_SERVICE))
- .createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, LOG_TAG);
- mWifiHighPerfLock.acquire();
+ WifiManager wM = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+ if (wM != null) {
+ mWifiHighPerfLock =
+ wM.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, LOG_TAG);
+ mWifiHighPerfLock.acquire();
+ } else {
+ logw("WifiManager is not running; cannot create lock.");
+ }
}
}
@@ -849,6 +853,8 @@
}
private boolean isWifiOn() {
+ if (mWm == null)
+ return false;
return (mWm.getConnectionInfo().getBSSID() == null) ? false : true;
}
@@ -1133,6 +1139,10 @@
Rlog.d(LOG_TAG, s);
}
+ private void logw(String s) {
+ Rlog.w(LOG_TAG, s);
+ }
+
private void loge(String s) {
Rlog.e(LOG_TAG, s);
}
diff --git a/src/java/com/android/server/sip/SipService.java b/src/java/com/android/server/sip/SipService.java
index 5328801..2c1f6ee 100644
--- a/src/java/com/android/server/sip/SipService.java
+++ b/src/java/com/android/server/sip/SipService.java
@@ -114,10 +114,13 @@
mContext = context;
mConnectivityReceiver = new ConnectivityReceiver();
- mWifiLock = ((WifiManager)
- context.getSystemService(Context.WIFI_SERVICE))
- .createWifiLock(WifiManager.WIFI_MODE_FULL, TAG);
- mWifiLock.setReferenceCounted(false);
+ WifiManager wM = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ if (wM != null) {
+ mWifiLock = wM.createWifiLock(WifiManager.WIFI_MODE_FULL, TAG);
+ mWifiLock.setReferenceCounted(false);
+ } else {
+ logw("WifiManager is not running; cannot create lock.");
+ }
mSipOnWifiOnly = SipManager.isSipWifiOnly(context);
mMyWakeLock = new SipWakeLock((PowerManager)
@@ -1160,25 +1163,28 @@
if (DBG) log("unregisterReceivers:");
// Reset variables maintained by ConnectivityReceiver.
- mWifiLock.release();
+ if (mWifiLock != null)
+ mWifiLock.release();
mNetworkType = -1;
}
private void updateWakeLocks() {
- for (SipSessionGroupExt group : mSipGroups.values()) {
- if (group.isOpenedToReceiveCalls()) {
- // Also grab the WifiLock when we are disconnected, so the
- // system will keep trying to reconnect. It will be released
- // when the system eventually connects to something else.
- if (mNetworkType == ConnectivityManager.TYPE_WIFI || mNetworkType == -1) {
- mWifiLock.acquire();
- } else {
- mWifiLock.release();
+ if (mWifiLock != null) {
+ for (SipSessionGroupExt group : mSipGroups.values()) {
+ if (group.isOpenedToReceiveCalls()) {
+ // Also grab the WifiLock when we are disconnected, so the
+ // system will keep trying to reconnect. It will be released
+ // when the system eventually connects to something else.
+ if (mNetworkType == ConnectivityManager.TYPE_WIFI || mNetworkType == -1) {
+ mWifiLock.acquire();
+ } else {
+ mWifiLock.release();
+ }
+ return;
+ }
}
- return;
- }
+ mWifiLock.release();
}
- mWifiLock.release();
mMyWakeLock.reset(); // in case there's a leak
}
@@ -1283,6 +1289,10 @@
Rlog.d(TAG, s);
}
+ private void logw(String s) {
+ Rlog.w(TAG, s);
+ }
+
private void loge(String s, Throwable e) {
Rlog.e(TAG, s, e);
}