summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shen Lin <shhenlin@gmail.com> 2023-12-08 11:34:26 +0800
committer Shen Lin <shhenlin@gmail.com> 2023-12-09 02:07:59 +0000
commit38d757b09be4a3f0330705d8c23f7dccb0010040 (patch)
treed096f7eb1cc708f0b9eca5a65604ebba4a1ba505
parent7fd8fcb360a430138aa34a8b38b0a99039462ff1 (diff)
Align the time of bssid comparison to avoid NPE caused by value changes.
This CL contributes the follwing refinements: - The return value of `wifiInfo.getBSSID()` may change when calling outside or inside `synchronized`, so it would be better to migrate the whole `bssid` comparison inside that `synchronized`. - Use `TextUtils` to handle `bssid` Bug: 315308336 Test: m Change-Id: Ie6fce634c9f097e9a866ec44d6de1e5d811a6b3f
-rw-r--r--services/core/java/com/android/server/adb/AdbDebuggingManager.java23
1 files changed, 13 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/adb/AdbDebuggingManager.java b/services/core/java/com/android/server/adb/AdbDebuggingManager.java
index 3280afdf6703..627a62ee0496 100644
--- a/services/core/java/com/android/server/adb/AdbDebuggingManager.java
+++ b/services/core/java/com/android/server/adb/AdbDebuggingManager.java
@@ -42,6 +42,7 @@ import android.debug.AdbManager;
import android.debug.AdbNotifications;
import android.debug.AdbProtoEnums;
import android.debug.AdbTransportType;
+import android.debug.IAdbTransport;
import android.debug.PairDevice;
import android.net.ConnectivityManager;
import android.net.LocalSocket;
@@ -66,6 +67,7 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.service.adb.AdbDebuggingManagerProto;
+import android.text.TextUtils;
import android.util.AtomicFile;
import android.util.Base64;
import android.util.Slog;
@@ -679,16 +681,17 @@ public class AdbDebuggingManager {
return;
}
- // Check for network change
- String bssid = wifiInfo.getBSSID();
- if (bssid == null || bssid.isEmpty()) {
- Slog.e(TAG, "Unable to get the wifi ap's BSSID. Disabling adbwifi.");
- Settings.Global.putInt(mContentResolver,
- Settings.Global.ADB_WIFI_ENABLED, 0);
- return;
- }
synchronized (mAdbConnectionInfo) {
- if (!bssid.equals(mAdbConnectionInfo.getBSSID())) {
+ // Check for network change
+ final String bssid = wifiInfo.getBSSID();
+ if (TextUtils.isEmpty(bssid)) {
+ Slog.e(TAG,
+ "Unable to get the wifi ap's BSSID. Disabling adbwifi.");
+ Settings.Global.putInt(mContentResolver,
+ Settings.Global.ADB_WIFI_ENABLED, 0);
+ return;
+ }
+ if (!TextUtils.equals(bssid, mAdbConnectionInfo.getBSSID())) {
Slog.i(TAG, "Detected wifi network change. Disabling adbwifi.");
Settings.Global.putInt(mContentResolver,
Settings.Global.ADB_WIFI_ENABLED, 0);
@@ -1397,7 +1400,7 @@ public class AdbDebuggingManager {
}
String bssid = wifiInfo.getBSSID();
- if (bssid == null || bssid.isEmpty()) {
+ if (TextUtils.isEmpty(bssid)) {
Slog.e(TAG, "Unable to get the wifi ap's BSSID.");
return null;
}