From a4407bfceef1bdb7eb4d83990722a61082d926c9 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Fri, 30 Oct 2015 13:15:58 -0700 Subject: pm: selinux support for AutoPlay apps Add AutoPlay flag to ApplicationInfo. Append autoplay flag to seinfo string - passed to libselinux for domain labeling decision. Change-Id: Ieb45ba328140888c0b679bf344df154658f9fbae --- core/java/android/content/pm/ApplicationInfo.java | 15 +++++++++++++++ services/core/java/com/android/server/pm/SELinuxMMAC.java | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 52c2f9bb4914..a83a64d691fd 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -468,6 +468,14 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { */ public static final int PRIVATE_FLAG_FORCE_DEVICE_ENCRYPTED = 1 << 5; + /** + * Value for {@link #privateFlags}: set to {@code true} if the application + * is AutoPlay. + * + * {@hide} + */ + public static final int PRIVATE_FLAG_AUTOPLAY = 1<<6; + /** * Private/hidden flags. See {@code PRIVATE_FLAG_...} constants. * {@hide} @@ -1030,6 +1038,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { && (flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0; } + /** + * @hide + */ + public boolean isAutoPlayApp() { + return (privateFlags & ApplicationInfo.PRIVATE_FLAG_AUTOPLAY) != 0; + } + /** * @hide */ diff --git a/services/core/java/com/android/server/pm/SELinuxMMAC.java b/services/core/java/com/android/server/pm/SELinuxMMAC.java index 5d8b1d281d54..903d12bcc217 100644 --- a/services/core/java/com/android/server/pm/SELinuxMMAC.java +++ b/services/core/java/com/android/server/pm/SELinuxMMAC.java @@ -103,6 +103,9 @@ public final class SELinuxMMAC { // Append privapp to existing seinfo label private static final String PRIVILEGED_APP_STR = ":privapp"; + // Append autoplay to existing seinfo label + private static final String AUTOPLAY_APP_STR = ":autoplayapp"; + /** * Load the mac_permissions.xml file containing all seinfo assignments used to * label apps. The loaded mac_permissions.xml file is determined by the @@ -316,6 +319,9 @@ public final class SELinuxMMAC { } } + if (pkg.applicationInfo.isAutoPlayApp()) + pkg.applicationInfo.seinfo += AUTOPLAY_APP_STR; + if (pkg.applicationInfo.isPrivilegedApp()) pkg.applicationInfo.seinfo += PRIVILEGED_APP_STR; -- cgit v1.2.3-59-g8ed1b