Moving permission and flag changes out of root identity for AppCloning
IntentRedirection Earlier the permission was being checked with system server's pid and uid as we were clearing binder identity for finding the values of AppCloningBuildingBlocks flag. Because of this the check was moot, moving the check out, so that it uses callers pd and uid. Bug: 281738146 Test: atest com.android.cts.appcloning.IntentRedirectionTest Change-Id: I62642d2c7cd76912ae800b02688cdc91d1a78214
This commit is contained in:
@@ -525,6 +525,8 @@ applications that come with the platform
|
||||
<permission name="android.permission.USE_ATTESTATION_VERIFICATION_SERVICE" />
|
||||
<!-- Permission required for GTS test - GtsCredentialsTestCases -->
|
||||
<permission name="android.permission.LAUNCH_CREDENTIAL_SELECTOR"/>
|
||||
<!-- Permission required for CTS test IntentRedirectionTest -->
|
||||
<permission name="android.permission.QUERY_CLONED_APPS"/>
|
||||
</privapp-permissions>
|
||||
|
||||
<privapp-permissions package="com.android.statementservice">
|
||||
|
||||
@@ -837,6 +837,8 @@
|
||||
<uses-permission android:name="android.permission.USE_ATTESTATION_VERIFICATION_SERVICE" />
|
||||
<!-- Permission required for GTS test - GtsCredentialsTestCases -->
|
||||
<uses-permission android:name="android.permission.LAUNCH_CREDENTIAL_SELECTOR" />
|
||||
<!-- Permission required for CTS test IntentRedirectionTest -->
|
||||
<uses-permission android:name="android.permission.QUERY_CLONED_APPS" />
|
||||
|
||||
<application
|
||||
android:label="@string/app_label"
|
||||
|
||||
@@ -60,15 +60,9 @@ public class NoFilteringResolver extends CrossProfileResolver {
|
||||
public static boolean isIntentRedirectionAllowed(Context context,
|
||||
AppCloningDeviceConfigHelper appCloningDeviceConfigHelper, boolean resolveForStart,
|
||||
long flags) {
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
return context.getResources().getBoolean(R.bool.config_enableAppCloningBuildingBlocks)
|
||||
&& appCloningDeviceConfigHelper.getEnableAppCloningBuildingBlocks()
|
||||
return isAppCloningBuildingBlocksEnabled(context, appCloningDeviceConfigHelper)
|
||||
&& (resolveForStart || (((flags & PackageManager.MATCH_CLONE_PROFILE) != 0)
|
||||
&& hasPermission(context, Manifest.permission.QUERY_CLONED_APPS)));
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
}
|
||||
|
||||
public NoFilteringResolver(ComponentResolverApi componentResolver,
|
||||
@@ -146,4 +140,18 @@ public class NoFilteringResolver extends CrossProfileResolver {
|
||||
return context.checkCallingOrSelfPermission(permission)
|
||||
== PackageManager.PERMISSION_GRANTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the AppCloningBuildingBlocks flag is enabled.
|
||||
*/
|
||||
private static boolean isAppCloningBuildingBlocksEnabled(Context context,
|
||||
AppCloningDeviceConfigHelper appCloningDeviceConfigHelper) {
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
return context.getResources().getBoolean(R.bool.config_enableAppCloningBuildingBlocks)
|
||||
&& appCloningDeviceConfigHelper.getEnableAppCloningBuildingBlocks();
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user