Skip to content
Snippets Groups Projects
  1. Mar 13, 2017
    • Alex Klyubin's avatar
      Targets for artifacts needed by recovery · ec78c377
      Alex Klyubin authored
      This ensures that SELinux policy artifact needed by recovery at
      runtime have targets in this build script. This is to make
      recoveryimage/bootimage targets depend on these artifacts explicitly,
      which reduces the element of surprise. Moreover, this enables us to
      move non-recovery artifacts around without affecting recovery
      artifacts.
      
      Test: Clean build, flash, device boots just fine, no new denials.
            Reboot to recovery, recovery boots just fine, no denials.
            This was tested on bullhead (non A/B device) and sailfish (A/B
            device).
      Bug: 33642277
      Change-Id: I3c494d9d7fec5c4f487d38964e572757fcf67f57
      ec78c377
  2. Mar 11, 2017
    • Jeff Vander Stoep's avatar
      Split mac_permissions.xml to /system and /vendor · bba9e7b9
      Jeff Vander Stoep authored
      Test: Build and boot Marlin
      Test: See the following in the logs:
      01-01 02:10:28.756  1345  1345 D SELinuxMMAC: Using policy file /system/etc/selinux/plat_mac_permissions.xml
      01-01 02:10:28.787  1345  1345 D SELinuxMMAC: Using policy file /vendor/etc/selinux/nonplat_mac_permissions.xml
      Bug: 36003167
      
      Change-Id: If17490a2a5d94bfea1fa6d282282d45d67e207e9
      bba9e7b9
  3. Mar 10, 2017
    • Jeff Vander Stoep's avatar
      Move split file_contexts to /system and /vendor · 0cb417a6
      Jeff Vander Stoep authored
      Build file_contexts.bin on legacy builds.
      Test: Marlin and Bullhead build and boot with no new denials.
      Test: Marlin and Bullhead recovery boots with no new denials.
      Test: Bullhead boots with file_contexts.bin in /
      Test: Marlin boot with /system/etc/selinux/plat_file_contexts and
            /vendor/etc/selinux/nonplat_file_contexts.
      Bug: 36002414
      
      Change-Id: Ide8498b3c86234d2f93bb22a7514d132c33067d6
      0cb417a6
    • Alex Klyubin's avatar
      Remove unnecessary recovery-related targets · 84aa7421
      Alex Klyubin authored
      Recovery should always use monolithic policy. Thus, we don't need
      split policy files *.recovery.cil. This commit removes these targets
      and rolls up the relevant parts of the targets into
      "sepolicy.recovery" which is the target which produces monolithic
      policy for recovery.
      
      Test: make clean && make sepolicy.recovery, then confirm that
            repolicy.recovery is identical to the one produced prior to this
            change.
      Test: Clean build, flash, device boots up fine, no new denials. Device
            also boots into recovery just fine, no denials.
      Bug: 31363362
      
      Change-Id: I7f698abe1f17308f2f03f5ed1b727a8b071e94c7
      84aa7421
    • Alex Klyubin's avatar
      Revert "Correct location of property_contexts for TREBLE devices" · 935ddb20
      Alex Klyubin authored
      This reverts commit 4cb628a3.
      
      Reason for revert: recovery image on marlin & sailfish no longer
      contained *property_contexts and thus recovery failed to boot.
      
      Test: Clean build, flash, sailfish and bullhead boot up just fine,
            and boot into recovery just fine.
      Bug: 36002573
      Bug: 36108354
      Change-Id: I2dffd80764f1a464327747d35a58691b24cff7a7
      935ddb20
  4. Mar 09, 2017
  5. Mar 08, 2017
    • Alex Klyubin's avatar
      Correct location of property_contexts for TREBLE devices · 4cb628a3
      Alex Klyubin authored
      This makes the build system, for TREBLE devices only, place
      plat_property_contexts under /system/etc/selinux and
      nonplat_property_contexts under /vendor/etc/selinux. For other devices
      these files are placed under /, same as before.
      
      Test: *_property_contexts in correct locations when
            PRODUCT_FULL_TREBLE is set to true and when it is set to false.
      Bug: 36002573
      
      Change-Id: I7e30e64918bb3ee671fa8c7a2e30ed96a9cc1ad7
      4cb628a3
  6. Mar 07, 2017
    • Alex Klyubin's avatar
      Precompiled kernel policy for on-device use · 193dccda
      Alex Klyubin authored
      This adds build targets for outputing precompiled kernel policy usable
      on devices with policy split between system and vendor partitions. On
      such devices, precompiled policy must reside on the vendor partition.
      
      Because such devices support updating these partitions independently
      of each other, the precompiled policy must reference the system
      partition's policy against which it was compiled. This enables init to
      establish whether the precompiled policy is valid for the current
      combination of system and vendor partitions.
      
      The referencing is performed by both the system and vendor partitions
      including the SHA-256 digest of the system partition's policy
      (plat_sepolicy.cil). Only the when the digest is the same on both
      partitions can the precompiled policy be used.
      
      Test: plat_sepolicy.cil.sha256 contains exactly the hex form of the
            SHA-256 digest of plat_sepolicy.cil
      Test: plat_sepolicy.cil.sha256 is identical
            precompiled_sepolicy.plat.sha256.
      Bug: 31363362
      Change-Id: I9771e1aa751e25bba6e2face37d68e0ae43b33a3
      193dccda
    • Jeff Vander Stoep's avatar
      assert plat neverallows on nonplat seapp_contexts · 87ae5f7d
      Jeff Vander Stoep authored
      With the plat/nonplat policy split, nonplat_seapp_contexts should still
      be checked against the plat_seapp_contexts_neverallows during build
      time to ensure no violations occur.
      
      Test: stock aosp_marlin builds.
      Test: name=foo.bar seinfo=default fails (as expected) in nonplat policy
      Test: name=foo.bar seinfo="" fails (as expected) in nonplat policy
      Bug: 36002816
      Change-Id: I95b2c695b23e2bdf420575d631e85391e93fc869
      87ae5f7d
  7. Mar 03, 2017
    • Alex Klyubin's avatar
      Move split sepolicy to correct locations · 052b0bbb
      Alex Klyubin authored
      This moves the CIL files comprising the split sepolicy to the
      directories/partitions based on whether the file is part of
      platform/system or non-platform/vendor. In particular:
      * plat_sepolicy.cil is moved to /system/etc/selinux,
      * nonplat_sepolicy.cil is moved to /vendor/etc/selinux, and
      * mapping_sepolicy.cil is moved to /vendor/etc/selinux.
      
      Test: Device boots, no additional denials. The test is performed both
            for a device without the CIL files and with the three CIL files.
      Bug: 31363362
      
      Change-Id: Ia760d7eb32c80ba72f6409da75d99eb5aae71cd9
      052b0bbb
  8. Feb 25, 2017
    • Alex Klyubin's avatar
      Test CIL policy when building it · 8f7173b0
      Alex Klyubin authored
      Prior to this commit, there was a bug in generated CIL where it
      wouldn't compile using secilc. The reason was that the build script
      was stripping out all lines containing "neverallow" from CIL files,
      accidentally removing lines which were not neverallow statements,
      such as lmx lines referencing app_neverallows.te.
      
      The commit fixes the build script's CIL neverallow filter to filter
      out only neverallow* statements, as originally intended. Moreover, to
      catch non-compiling CIL policy earlier in the future, this commit runs
      secilc on the policy at build time. In particular, it tests that
      platform policy compiles on its own and that nonplatform + platform +
      mappig policy compiles as well.
      
      Test: CIL policy builds and compiles on-device using secilc
      Bug: 31363362
      Change-Id: I769aeb3d8c913a5599f1a2195c69460ece7f6465
      8f7173b0
  9. Jan 31, 2017
    • Alex Klyubin's avatar
      Device-agnostic policy for vendor image · 5596172d
      Alex Klyubin authored
      Default HAL implementations are built from the platform tree and get
      placed into the vendor image. The SELinux rules needed for these HAL
      implementations to operate thus need to reside on the vendor
      partition.
      
      Up to now, the only place to define such rules in the source tree was
      the system/sepolicy/public directory. These rules are placed into the
      vendor partition. Unfortunately, they are also placed into the
      system/root partition, which thus unnecessarily grants these rules to
      all HAL implementations of the specified service, default/in-process
      shims or not.
      
      This commit adds a new directory, system/sepolicy/vendor, whose
      rules are concatenated with the device-specific rules at build time.
      These rules are thus placed into the vendor partition and are not
      placed into the system/root partition.
      
      Test: No change to SELinux policy.
      Test: Rules placed into vendor directory end up in nonplat* artefacts,
            but not in plat* artefacts.
      Bug: 34715716
      Change-Id: Iab14aa7a3311ed6d53afff673e5d112428941f1c
      5596172d
  10. Jan 29, 2017
  11. Jan 20, 2017
    • Alex Klyubin's avatar
      Fix bugs in *_file_contexts targets · e4665d7f
      Alex Klyubin authored
      This fixes the following issues introduced in commit
      d225b697:
      * plat_file_contexts was empty because the target was referencing
        system/sepolicy/private/file_contexts via a misspelled variable
        name.
      * plat_file_contexts wasn't marked as dirty and thus wasn't rebuilt
        when system/sepolicy/private/file_contexts changed. This is because
        the file_contexts dependency was referenced via a misspelled
        variable name.
      * plat_file_contexts wasn't sorted (as opposed to other similar
        targets, such as nonplat_file_contexts and file_contexts.bin). This
        may lead to unnecessary non-determinism.
      * nonplat_file_contexts wasn't marked dirty and thus wasn't rebuilt
        when device-specific file_contexts file(s) changed. This is because
        the file_contexts files were referenced via a misspelled variable
        name.
      
      Test: "make plat_file_contexts" produces a non-empty file containing
            mappings from system/sepolicy/private/file_contexts
      Test: "make plat_file_contexts" updates output when
            system/sepolicy/private/file_contexts changes
      Test: "make plat_file_contexts" produces output which is sorted
            accroding to rules in fc_sort
      Test: "make nonplat_file_contexts" updates output when
            device/lge/bullhead/sepolicy/file_contexts changes (tested on
            aosp_bullhead-eng)
      Bug: 31363362
      Change-Id: I540555651103f02c96cf958bb93618f600e47a75
      e4665d7f
  12. Jan 18, 2017
  13. Jan 09, 2017
  14. Jan 05, 2017
    • dcashman's avatar
      Split file_contexts for on-device compilation. · d225b697
      dcashman authored
      
      Simulate platform and non-platform split by compiling two different
      file_contexts files and loading them together on-device.  Leave the existing
      file_contexts.bin in place until we're ready to build images based on the new
      files.
      
      Bug: 31363362
      Test: Builds and boots without additional denials.
      Change-Id: I7248f876e2230cee3b3cbf386422063da1e3dde0
      
      Bring back file_contexts.bin.
      
      Change-Id: Ifec2c363579151080fdec48e8bc46bbbc8c97674
      Signed-off-by: default avatarSandeep Patil <sspatil@google.com>
      d225b697
  15. Dec 28, 2016
  16. Dec 21, 2016
    • Steven Moreland's avatar
      Remove ENABLE_TREBLE from sepolicy. · 52b75977
      Steven Moreland authored
      Enabling/disabling sepolicy based on ENABLE_TREBLE is not granular
      enough (ref: b/32978887 #4).
      
      Bug: 32978887
      Test: compiles, doesn't cause any additional denials on device. Nothing
      depends on these things I'm removing.
      Change-Id: I10acbde16e5e2093f2c9205ed79cd20caed7f44d
      52b75977
  17. Dec 17, 2016
  18. Dec 16, 2016
    • Dan Cashman's avatar
      Move sepolicy and recovery from on-device tree and add dependency. · cf5c6ecb
      Dan Cashman authored
      Prevent sepolicy and sepolicy.recover from showing up in the root
      filesystem when they will not be created as part of it.  Also make
      sure both are added as dependencies to version_policy to ensure the
      neverallow checks are run.
      
      Bug: 31363362
      Test: Builds and boots, including recovery, without additional
        denials.  Neverallow violations still caught at build time.
      
      Change-Id: I39e3cbc150551c9316952523927d057538cd00a7
      cf5c6ecb
    • Dan Cashman's avatar
      Switch recovery to versioned policy and split into components. · 1c040277
      Dan Cashman authored
      And do some clean up:
      Replace LOCAL_TARGET_ARCH with global arch specifier that won't get
      clobbered, clean up sepolicy.recovery's eng specification, ensure that
      build macros are applied across all policy generation, not just
      plat_policy, and make sure that all private variables are cleared and
      alphabetized at the end.
      
      Bug: 31363362
      Bug: 31369363
      Test: Boot into recovery and observe no selinux denials.
      Change-Id: Ibc15b097f6d19acf01f6b22bee0e083b15f4ef75
      1c040277
  19. Dec 15, 2016
  20. Dec 13, 2016
    • dcashman's avatar
      Split policy for on-device compilation. · 1faa644c
      dcashman authored
      Simulate platform and non-platform split by sending the split files to the
      device to be compiled by init.
      
      Bug: 31363362
      Test: Policy builds on-device and boots.  sediff shows no difference.
      Change-Id: I9627d1c66ca37786d97a049666278a4992ad7579
      1faa644c
  21. Dec 07, 2016
  22. Dec 06, 2016
    • dcashman's avatar
      sepolicy: add version_policy tool and version non-platform policy. · 2e00e637
      dcashman authored
      In order to support platform changes without simultaneous updates from
      non-platform components, the platform and non-platform policies must be
      split.  In order to provide a guarantee that policy written for
      non-platform objects continues to provide the same access, all types
      exposed to non-platform policy are versioned by converting them and the
      policy using them into attributes.
      
      This change performs that split, the subsequent versioning and also
      generates a mapping file to glue the different policy components
      together.
      
      Test: Device boots and runs.
      Bug: 31369363
      Change-Id: Ibfd3eb077bd9b8e2ff3b2e6a0ca87e44d78b1317
      2e00e637
  23. Nov 21, 2016
    • Jorge Lucangeli Obes's avatar
      Add WITH_DEXPREOPT_PIC to 'with_dexpreopt' SELinux macro. · 28994347
      Jorge Lucangeli Obes authored
      |WITH_DEXPREOPT_PIC = false| will still cause code to be loaded from
      /data.
      
      Bug: 32970029
      Test: On HiKey and Marlin:
      Test: Add |WITH_DEXPREOPT_PIC = false|, see SELinux denial.
      Test: Apply this CL, no SELinux denials.
      Change-Id: I0a1d39eeb4d7f75d84c1908b879d9ea1ccffba74
      28994347
  24. Nov 18, 2016
    • Jorge Lucangeli Obes's avatar
      Use with_dexpreopt macro for zygote execute permissions. · 84db84e6
      Jorge Lucangeli Obes authored
      When WITH_DEXPREOPT is set, the zygote does not need to execute
      dalvikcache_data_file objects.
      
      Bug: 32970029
      Test: Add policy line inside macro, build with and without WITH_DEXPREOPT.
      Test: HiKey builds, boots, no zygote denials.
      Change-Id: I4dace93e8044267232f0f26cfe427fc250d351fb
      84db84e6
  25. Oct 19, 2016
  26. Oct 06, 2016
    • dcashman's avatar
      Split general policy into public and private components. · cc39f637
      dcashman authored
      Divide policy into public and private components.  This is the first
      step in splitting the policy creation for platform and non-platform
      policies.  The policy in the public directory will be exported for use
      in non-platform policy creation.  Backwards compatibility with it will
      be achieved by converting the exported policy into attribute-based
      policy when included as part of the non-platform policy and a mapping
      file will be maintained to be included with the platform policy that
      maps exported attributes of previous versions to the current platform
      version.
      
      Eventually we would like to create a clear interface between the
      platform and non-platform device components so that the exported policy,
      and the need for attributes is minimal.  For now, almost all types and
      avrules are left in public.
      
      Test: Tested by building policy and running on device.
      
      Change-Id: Idef796c9ec169259787c3f9d8f423edf4ce27f8c
      cc39f637
  27. Aug 29, 2016
  28. Jul 01, 2016
  29. May 13, 2016
  30. Mar 01, 2016
    • Nick Kralevich's avatar
      suppress unnecessary makefile output · 6ef10bd4
      Nick Kralevich authored
      checkpolicy spits out a bunch of unnecessary lines during normal
      operation, which bloat the logs and hide other more important
      warnings. Suppress the normal output.
      
      SELinux compile time errors are printed to stderr, and are
      uneffected by this change.
      
      Change-Id: I07f2cbe8afcd14abf1c025355a169b5214ed5c6e
      6ef10bd4
  31. Feb 27, 2016
    • Nick Kralevich's avatar
      Don't allow permissive SELinux domains on user builds. · 3df1fda5
      Nick Kralevich authored
      It's a CTS requirement that all SELinux domains be in
      enforcing mode. Add the same assertion to the build system
      when targeting user builds.
      
      In particular, this avoids a situation where device integrity
      checking is enabled on user builds, but permissive denials
      are being generated, causing the device to unexpectedly reboot
      into safe mode.
      
      A developer wanting to put an SELinux domain into permissive
      mode for userdebug/eng purposes can write the following
      in their policy:
      
        userdebug_or_eng(`
          permissive foo;
        ')
      
      Bug: 26902605
      Bug: 27313768
      
      (cherry picked from commit bca98efa)
      
      Change-Id: If6abe1fa70c79a1fccdbdd9ff273d92de7565a73
      3df1fda5
    • Nick Kralevich's avatar
      Don't allow permissive SELinux domains on user builds. · bca98efa
      Nick Kralevich authored
      It's a CTS requirement that all SELinux domains be in
      enforcing mode. Add the same assertion to the build system
      when targeting user builds.
      
      In particular, this avoids a situation where device integrity
      checking is enabled on user builds, but permissive denials
      are being generated, causing the device to unexpectedly reboot
      into safe mode.
      
      A developer wanting to put an SELinux domain into permissive
      mode for userdebug/eng purposes can write the following
      in their policy:
      
        userdebug_or_eng(`
          permissive foo;
        ')
      
      Bug: 26902605
      Bug: 27313768
      Change-Id: Ic0971d9e96a28f2a98f9d56a547661d24fb81a21
      bca98efa
  32. Jan 15, 2016
    • William Roberts's avatar
      fc_sort: initial commit · 49693f1b
      William Roberts authored
      
      Ordering matters in fc files; the last match wins. In builds where
      many BOARD_SEPOLICY_DIRS are set, the order of that list becomes
      increasingly important in order to maintain a cohesive built
      file_contexts.
      
      To correct this, we sort the device specific file_contexts entries
      with the upstream fc_sort tool.
      
      Change-Id: I3775eae11bfa5905cad0d02a0bf26c76ac03437c
      Signed-off-by: default avatarWilliam Roberts <william.c.roberts@intel.com>
      49693f1b
Loading