Infinite reboot when OS upgrade from M to N with set Always-on VPN
Symptom : Infinite reboot Reproduce step : 1. Set the Always-on VPN in M OS 2. OS upgrade from M to N Reproduce frequency : 100% Reason of issue : https://android.googlesource.com/platform/frameworks/base/+/9b74791 As you know, in M OS, Always-on VPN information is stored in keystore with encryted. However, in N OS, there is no encryption when it put in keystore. So, You deleted keystore check(locked/unlock) logic on ConnectivityService. By this reason, when device upgrade to N OS(set Always-on VPN), it goes infinite boot. (Cannot read old always-on vpn information untill device unlock.) Solution : I founded exception handling when this case as follows: If getting Credentials.LOCKDOWN_VPN information has null value(catch the exception), updateLockdownVpn returns false value. Signed-off-by: SangJin Cha <sj.cha@lge.com> Change-Id: I6fd980152440bb5248aab45e2f8fda448d3f6c7b
This commit is contained in:
@@ -3669,7 +3669,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
// Tear down existing lockdown if profile was removed
|
||||
mLockdownEnabled = LockdownVpnTracker.isEnabled();
|
||||
if (mLockdownEnabled) {
|
||||
final String profileName = new String(mKeyStore.get(Credentials.LOCKDOWN_VPN));
|
||||
byte[] profileTag = mKeyStore.get(Credentials.LOCKDOWN_VPN);
|
||||
if (profileTag == null) {
|
||||
Slog.e(TAG, "Lockdown VPN configured but cannot be read from keystore");
|
||||
return false;
|
||||
}
|
||||
String profileName = new String(profileTag);
|
||||
final VpnProfile profile = VpnProfile.decode(
|
||||
profileName, mKeyStore.get(Credentials.VPN + profileName));
|
||||
if (profile == null) {
|
||||
|
||||
Reference in New Issue
Block a user