Merge "Merge "Key revocation check is permissive when device is unlocked" am: a9384cdc9b am: 3f638d9a3f" into qt-qpr1-dev-plus-aosp
This commit is contained in:
committed by
Android (Google) Code Review
commit
5882228ab8
@@ -377,6 +377,7 @@ applications that come with the platform
|
|||||||
<privapp-permissions package="com.android.dynsystem">
|
<privapp-permissions package="com.android.dynsystem">
|
||||||
<permission name="android.permission.REBOOT"/>
|
<permission name="android.permission.REBOOT"/>
|
||||||
<permission name="android.permission.MANAGE_DYNAMIC_SYSTEM"/>
|
<permission name="android.permission.MANAGE_DYNAMIC_SYSTEM"/>
|
||||||
|
<permission name="android.permission.READ_OEM_UNLOCK_STATE"/>
|
||||||
</privapp-permissions>
|
</privapp-permissions>
|
||||||
|
|
||||||
<privapp-permissions package="com.android.settings">
|
<privapp-permissions package="com.android.settings">
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
<uses-permission android:name="android.permission.MANAGE_DYNAMIC_SYSTEM" />
|
<uses-permission android:name="android.permission.MANAGE_DYNAMIC_SYSTEM" />
|
||||||
<uses-permission android:name="android.permission.REBOOT" />
|
<uses-permission android:name="android.permission.REBOOT" />
|
||||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||||
|
<uses-permission android:name="android.permission.READ_OEM_UNLOCK_STATE" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import android.os.AsyncTask;
|
|||||||
import android.os.MemoryFile;
|
import android.os.MemoryFile;
|
||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
import android.os.image.DynamicSystemManager;
|
import android.os.image.DynamicSystemManager;
|
||||||
|
import android.service.persistentdata.PersistentDataBlockManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.webkit.URLUtil;
|
import android.webkit.URLUtil;
|
||||||
|
|
||||||
@@ -133,6 +134,7 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
|
|||||||
private final DynamicSystemManager mDynSystem;
|
private final DynamicSystemManager mDynSystem;
|
||||||
private final ProgressListener mListener;
|
private final ProgressListener mListener;
|
||||||
private final boolean mIsNetworkUrl;
|
private final boolean mIsNetworkUrl;
|
||||||
|
private final boolean mIsDeviceBootloaderUnlocked;
|
||||||
private DynamicSystemManager.Session mInstallationSession;
|
private DynamicSystemManager.Session mInstallationSession;
|
||||||
private KeyRevocationList mKeyRevocationList;
|
private KeyRevocationList mKeyRevocationList;
|
||||||
|
|
||||||
@@ -160,6 +162,13 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
|
|||||||
mDynSystem = dynSystem;
|
mDynSystem = dynSystem;
|
||||||
mListener = listener;
|
mListener = listener;
|
||||||
mIsNetworkUrl = URLUtil.isNetworkUrl(mUrl);
|
mIsNetworkUrl = URLUtil.isNetworkUrl(mUrl);
|
||||||
|
PersistentDataBlockManager pdbManager =
|
||||||
|
(PersistentDataBlockManager)
|
||||||
|
mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
|
||||||
|
mIsDeviceBootloaderUnlocked =
|
||||||
|
(pdbManager != null)
|
||||||
|
&& (pdbManager.getFlashLockState()
|
||||||
|
== PersistentDataBlockManager.FLASH_LOCK_UNLOCKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -272,7 +281,6 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
|
|||||||
String.format(Locale.US, "Unsupported URL: %s", mUrl));
|
String.format(Locale.US, "Unsupported URL: %s", mUrl));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(yochiang): Bypass this check if device is unlocked
|
|
||||||
try {
|
try {
|
||||||
String listUrl = mContext.getString(R.string.key_revocation_list_url);
|
String listUrl = mContext.getString(R.string.key_revocation_list_url);
|
||||||
mKeyRevocationList = KeyRevocationList.fromUrl(new URL(listUrl));
|
mKeyRevocationList = KeyRevocationList.fromUrl(new URL(listUrl));
|
||||||
@@ -287,11 +295,12 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
|
|||||||
|
|
||||||
private void imageValidationThrowOrWarning(ImageValidationException e)
|
private void imageValidationThrowOrWarning(ImageValidationException e)
|
||||||
throws ImageValidationException {
|
throws ImageValidationException {
|
||||||
if (mIsNetworkUrl) {
|
if (mIsDeviceBootloaderUnlocked || !mIsNetworkUrl) {
|
||||||
throw e;
|
// If device is OEM unlocked or DSU is being installed from a local file URI,
|
||||||
} else {
|
// then be permissive.
|
||||||
// If DSU is being installed from a local file URI, then be permissive
|
|
||||||
Log.w(TAG, e.toString());
|
Log.w(TAG, e.toString());
|
||||||
|
} else {
|
||||||
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user