Skip to content
Snippets Groups Projects
  1. Apr 24, 2017
    • Jeff Vander Stoep's avatar
      Android.mk: fix dependency typo · 5edd96d9
      Jeff Vander Stoep authored
      Bug: 37646565
      Test: build marlin-userdebug
      Change-Id: I3325d027fa7bdafb48f1f53ac052f2a68352c1dc
      5edd96d9
    • Jeff Vander Stoep's avatar
      Retain neverallow rules in CIL files · b8787693
      Jeff Vander Stoep authored
      Fixes issue where attributes used exlusively in neverallow
      rules were removed from policy.
      
      For on-device compile use the -N flag to skip neverallow tests.
      
      Policy size increases:
      vendor/etc/selinux/nonplat_sepolicy.cil 547849 -> 635637
      vendor/etc/selinux/precompiled_sepolicy 440248 -> 441076
      system/etc/selinux/plat_sepolicy.cil    567664 -> 745230
      
      For a total increase in system/vendor: 266182.
      
      Boot time changes:
      Pixel uses precompiled policy so boot time is not impacted.
      When forcing on-device compile on Marlin selinux policy compile
      time increases 510-520 ms -> 550-560 ms.
      
      Bug: 37357742
      Test: Build and boot Marlin.
      Test: Verify both precompiled and on-device compile work.
      Change-Id: Ib3cb53d376a96e34f55ac27d651a6ce2fabf6ba7
      b8787693
  2. Apr 15, 2017
    • Jeff Vander Stoep's avatar
      secilc: expand generated attributes on non-treble devices · 748cae86
      Jeff Vander Stoep authored
      Attributes added to the policy by the policy compiler are causing
      performance issues. Telling the compiler to expand these
      auto-generated attributes to their underlying types prevents
      preemtion during policy lookup.
      
      Bug: 3650825
      Test: Build and boot Bullhead
      Change-Id: I9a33f5efb1e7c25d83dda1ea5dfe663b22846a2f
      748cae86
  3. Apr 13, 2017
    • Martijn Coenen's avatar
      Add hwservice_contexts and support for querying it. · 3ea47b92
      Martijn Coenen authored
      hwservicemanager can check hwservice_contexts files
      both from the framework and vendor partitions.
      
      Initially, have a wildcard '*' in hwservice_contexts
      that maps to a label that can be added/found from
      domain. This needs to be removed when the proper policy
      is in place.
      
      Also, grant su/shell access to hwservicemanager list
      operations, so tools like 'lshal' continue to work.
      
      Bug: 34454312
      Test: Marlin boots
      Change-Id: I3a02d97a82458692b528d85c1b8e78b6f82ea1bc
      3ea47b92
    • Jeff Vander Stoep's avatar
      secilc: expand generated attributes · ac171b44
      Jeff Vander Stoep authored
      Attributes added to the policy by the policy compiler are causing
      performance issues. Telling the compiler to expand these
      auto-generated attributes to their underlying types prevents
      preemtion during policy lookup.
      
      With this patch the number of attributes in policy drops from
      845 to 475. The number of attributes assigned to the bluetooth domain
      drops from 41 to 11.
      
      Bug: 3650825
      Test: Build and boot Marlin
      Change-Id: Ica06e82001eca323c435fe13c5cf4beba74999e2
      ac171b44
  4. Apr 12, 2017
    • Dan Cashman's avatar
      Fix build part 2. Always create platform_mapping_file. · 4d24a775
      Dan Cashman authored
      commit 552fb537 fixed an undefined
      module error by removing the module when not defined (on non-treble
      devices), but the sepolicy build on non-treble devices was changed
      to rely on the split treble files, even though the split is not used.
      Change this so that the file is always present, to allow policy
      compilation.
      
      Test: policy fully builds.
      Change-Id: Ia0934c739336cea54228bbff8d6644aa3ae501e5
      4d24a775
    • Dan Cashman's avatar
      Fix build: encase $(platform_mapping_file) module in treble block. · 552fb537
      Dan Cashman authored
      Specifying an empty module causes a build error, so make sure that
      if there is no $(platform_mapping_file) the MODULE is not included.
      
      Test: Makefiles parsed without error.
      Change-Id: Ie99e6534c388a3d42bf90cdfef5ee64d5c640fa0
      552fb537
    • Dan Cashman's avatar
      Remove BOARD_SEPOLICY_VERS_DIR build variable. · 6bf50e5c
      Dan Cashman authored
      The original purpose of BOARD_SEPOLICY_VERS_DIR was to allow the
      specification of an alternate platform public policy, primarily for
      testing purposes.  This should not be a part of the released platform,
      since the only public policy and corresponding mapping file construction
      should be based on the current public platform policy, with compatibility
      with vendor policy targeting previous versions provided by static mapping
      files.  Its continued presence muddles the generation of mapping files by
      potentially introducing a situation in which an incorrect mapping file is
      generated.  Remove it.
      
      Bug: 36783775
      Test: Device boots with compiled SELinux policy (SHA256s don't match for
      precompiled policy).
      
      Change-Id: I9e2100a7d709c9c0949f4e556229623961291a32
      6bf50e5c
    • Dan Cashman's avatar
      Change recovery to static platform-only compilation. · c8d4535c
      Dan Cashman authored
      Recovery is not meant to be versioned in the treble model, but rather
      provided as part of the platform/framework component and self-sufficient.
      Simplify its compilation by removing the attribute versioning steps, but
      maintain device-specific policy, which is currently required for full
      functionality.
      
      Bug: 37240781
      Bug: 36783775
      Test: recovery boots and is able to select commands.  Also tried:
      reboot system, boot to bootloader, factory reset, sideload, view logs,
      run graphics test, and power off.
      
      Change-Id: I637819844d9a8ea5b315404f4abd03e8f923303a
      c8d4535c
    • Dan Cashman's avatar
      Change mapping file name to reflect its platform version. · 4f9a648e
      Dan Cashman authored
      As the platform progresses in the split SELinux world, the platform
      will need to maintain mapping files back to previous platform versions
      to maintain backwards compatibility with vendor images which have SELinux
      policy written based on the older versions.  This requires shipping multiple
      mapping files with the system image so that the right one can be selected.
      Change the name and location of the mapping file to reflect this.  Also add
      a file to the vendor partition indicating which version is being targeted that
      the platform can use to determine which mapping file to choose.
      
      Bug: 36783775
      Test: Force compilation of sepolicy on-device with mapping file changed
      to new location and name, using the value reported on /vendor.
      
      Change-Id: I93ab3e52c2c80c493719dc3825bc731867ea76d4
      4f9a648e
  5. Apr 11, 2017
    • Dan Cashman's avatar
      Add PLATFORM_SEPOLICY_VERSION. · bec5e57e
      Dan Cashman authored
      Create PLATFORM_SEPOLICY_VERSION, which is a version string to represent
      the platform sepolicy of the form "NN.m" where "NN" mirrors the
      PLATFORM_SDK_VERSION and "m" is a policy-based minor version that is
      incremented with every policy change that requires a new backward-compatible
      mapping file to be added to allow for future-proofing vendor policy against
      future platform policy.
      
      (cherry-pick of commit 6f14f6b7)
      
      Bug: 36783775
      Test: Device boots when sha256 doesn't match and compilation is forced.
      Change-Id: I4edb29824f2050a5a6e1bc078c100cf42e45c303
      bec5e57e
    • Sandeep Patil's avatar
      sepolicy_version: change current version to NN.m format · 9a3a6a81
      Sandeep Patil authored
      
      The sepolicy version takes SDK_INT.<minor> format. Make sure our
      'current' policy version reflects the format and make it '100000.0'.
      This ensures any vendor.img compiled with this will never work with
      a production framework image either.
      
      Make version_policy replace the '.' in version by '_' so secilc is
      happy too.
      
      This unblocks libvintf from giving out a runtme API to check vendor's
      sepolicy version. The PLAT_PUBLIC_SEPOLICY_CURRENT_VERSION will
      eventually be picked up from the build system.
      
      (cherry-pick of commit 42f95984)
      
      Bug: 35217573
      Test: Build and boot sailfish.
            Boot sailfish with sepolicy compilation on device.
      Signed-off-by: default avatarSandeep Patil <sspatil@google.com>
      
      Change-Id: Ic8b6687c4e71227bf9090018999149cd9e11d63b
      9a3a6a81
  6. Apr 10, 2017
    • Dan Cashman's avatar
      Add PLATFORM_SEPOLICY_VERSION. · 6f14f6b7
      Dan Cashman authored
      Create PLATFORM_SEPOLICY_VERSION, which is a version string to represent
      the platform sepolicy of the form "NN.m" where "NN" mirrors the
      PLATFORM_SDK_VERSION and "m" is a policy-based minor version that is
      incremented with every policy change that requires a new backward-compatible
      mapping file to be added to allow for future-proofing vendor policy against
      future platform policy.
      
      Bug: 36783775
      Test: Device boots when sha256 doesn't match and compilation is forced.
      Change-Id: I4edb29824f2050a5a6e1bc078c100cf42e45c303
      6f14f6b7
  7. Apr 07, 2017
    • Sandeep Patil's avatar
      sepolicy_version: change current version to NN.m format · 42f95984
      Sandeep Patil authored
      
      The sepolicy version takes SDK_INT.<minor> format. Make sure our
      'current' policy version reflects the format and make it '100000.0'.
      This ensures any vendor.img compiled with this will never work with
      a production framework image either.
      
      Make version_policy replace the '.' in version by '_' so secilc is
      happy too.
      
      This unblocks libvintf from giving out a runtme API to check vendor's
      sepolicy version. The PLAT_PUBLIC_SEPOLICY_CURRENT_VERSION will
      eventually be picked up from the build system.
      
      Bug: 35217573
      Test: Build and boot sailfish.
            Boot sailfish with sepolicy compilation on device.
      Signed-off-by: default avatarSandeep Patil <sspatil@google.com>
      
      Change-Id: Ic8b6687c4e71227bf9090018999149cd9e11d63b
      42f95984
    • Alex Klyubin's avatar
      Preserve treble-only flag for CTS neverallows · 446279a6
      Alex Klyubin authored
      CTS includes general_sepolicy.conf built from this project. CTS then
      tests this file's neverallow rules against the policy of the device
      under test. Prior to this commit, neverallow rules which must be
      enforced only for Treble devices we not included into
      general_sepolicy.conf. As a result, these rules were not enforced for
      Treble devices.
      
      This commit fixes the issue as follows. Because CTS includes only one
      policy, the policy now contains also the rules which are only for
      Treble devices. To enable CTS to distinguish rules needed for all
      devices from rules needed only on Treble devices, the latter rules are
      contained in sections delimited with BEGIN_TREBLE_ONLY and
      END_TREBLE_ONLY comments.
      
      This commit also removes the unnecessary sepolicy.general target. This
      target is not used anywhere and is causing trouble because it is
      verifying neverallows of the policy meant to be used by CTS. This
      policy can no longer be verified with checkpolicy without
      conditionally including or excluding Treble-only neverallows.
      
      Test: mmm system/sepolicy
      Test: Device boots -- no new denials
      Bug: 37082262
      Change-Id: I15172a7efd9374543ba521e17aead1bdda7451bf
      446279a6
    • Martijn Coenen's avatar
      Fix checkfc options order. · ee97662f
      Martijn Coenen authored
      darwin's getopt() doesn't like putting arguments
      in the wrong order.
      
      Test: Mac/Linux builds
      Change-Id: If632e9077c1b5714f91c5adaa04afb4963d9b0f5
      ee97662f
    • Martijn Coenen's avatar
      Modify checkfc to check (vnd|hw)service_manager_type. · d48d54a3
      Martijn Coenen authored
      added checkfc options 'l' and 'v' to verify hwservice_manager_type
      and vndservice_manager_type on service context files, respectively.
      
      The checkfc call to verify the new hwservice_contexts files will
      be added together with hwservicemanager ACL CLs later.
      
      Bug: 34454312
      Bug: 36052864
      Test: device boots, works
      Change-Id: Ie3b56da30be47c95a6b05d1bc5e5805acb809783
      d48d54a3
  8. Apr 06, 2017
    • Dan Cashman's avatar
      Move mapping_sepolicy.cil to /system partition. · 04ef57bf
      Dan Cashman authored
      This is a necessary first step to finalizing the SELinux policy build
      process.  The mapping_sepolicy.cil file is required to provide backward
      compatibility with the indicated vendor-targeted version.
      
      This still needs to be extended to provide N mapping files and corresponding
      SHA256 outputs, one for each of the N previous platform versions with which
      we're backward-compatible.
      
      (cherry-pick of commit: 0e9c47c0)
      
      Bug: 36783775
      Test: boot device with matching sha256 and non-matching and verify that
      device boots and uses either precompiled or compiled policy as needed. Also
      verify that mapping_sepolicy.cil has moved.
      
      Change-Id: I5692fb87c7ec0f3ae9ca611f76847ccff9182375
      04ef57bf
    • Dan Cashman's avatar
      Move mapping_sepolicy.cil to /system partition. · 0e9c47c0
      Dan Cashman authored
      This is a necessary first step to finalizing the SELinux policy build
      process.  The mapping_sepolicy.cil file is required to provide backward
      compatibility with the indicated vendor-targeted version.
      
      This still needs to be extended to provide N mapping files and corresponding
      SHA256 outputs, one for each of the N previous platform versions with which
      we're backward-compatible.
      
      Bug: 36783775
      Test: boot device with matching sha256 and non-matching and verify that
      device boots and uses either precompiled or compiled policy as needed. Also
      verify that mapping_sepolicy.cil has moved.
      
      Change-Id: I5692fb87c7ec0f3ae9ca611f76847ccff9182375
      0e9c47c0
  9. Apr 03, 2017
    • Martijn Coenen's avatar
      Add target for vndservice_contexts. · 6676c234
      Martijn Coenen authored
      So we can limit vndservicemanager access to
      just vndservice_contexts.
      
      Bug: 36052864
      Test: servicemanager,vndservicemanager work
      Change-Id: I7b132d4f616ba1edd0daf7be750d4b7174c4e188
      6676c234
  10. Mar 26, 2017
    • Jeff Vander Stoep's avatar
      Create selinux_policy phony target · d4a3e9dd
      Jeff Vander Stoep authored
      Moves selinux policy build decisions to system/sepolicy/Android.mk.
      This is done because the PRODUCT_FULL_TREBLE variable isn't available
      in embedded.mk and TARGET_SANITIZE isn't available to dependencies of
      init.
      
      Test: Build/boot Bullhead PRODUCT_FULL_TREBLE=false
      Test: Build/boot Marlin PRODUCT_FULL_TREBLE=true
      Test: Build Marlin TARGET_SANITIZE=address. Verify asan rules are
            included in policy output.
      Bug: 36138508
      Change-Id: I20a25ffdfbe2b28e7e0f3e090a4df321e85e1235
      d4a3e9dd
  11. Mar 25, 2017
    • William Roberts's avatar
      build: stop generating $T/file_contexts · 5d0c2e41
      William Roberts authored
      
      secilc is being used without -f which is causing a file_contexts
      file to be generated in the root of the tree where the build tools
      run:
      
      $ stat $T/file_contexts
        File: 'file_contexts'
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: fc00h/64512d	Inode: 5508958     Links: 1
      Access: (0664/-rw-rw-r--)  Uid: ( 1000/wcrobert)   Gid: ( 1000/wcrobert)
      Access: 2017-03-23 11:23:41.691538047 -0700
      Modify: 2017-03-23 11:23:41.691538047 -0700
      Change: 2017-03-23 11:23:41.691538047 -0700
      
      Test: remove $T/file_contexts, touch a policy file and make sepolicy,
            ensure file is not regenerated. Also, ensure hikey builds and
            boots.
      
      Change-Id: I0d15338a540dba0194c65a1436647c7d38fe3c79
      Signed-off-by: default avatarWilliam Roberts <william.c.roberts@intel.com>
      5d0c2e41
  12. Mar 24, 2017
    • Alex Klyubin's avatar
      Mark all clients of Allocator HAL · 7cda44f4
      Alex Klyubin authored
      This change associates all domains which are clients of Allocator HAL
      with hal_allocator_client and the, required for all HAL client
      domains, halclientdomain.
      
      This enables this commit to remove the now unnecessary hwallocator_use
      macro because its binder_call(..., hal_allocator_server) is covered by
      binder_call(hal_allocator_client, hal_allocator_server) added in this
      commit.
      
      Unfortunately apps, except isolated app, are clients of Allocator HAL
      as well. This makes it hard to use the hal_client_domain(...,
      hal_allocator) macro because it translates into "typeattribute" which
      currently does not support being provided with a set of types, such as
      { appdomain -isolated_app }. As a workaround, hopefully until
      typeattribute is improved, this commit expresses the necessary
      association operation in CIL. private/technical_debt.cil introduced by
      this commit is appended into the platform policy CIL file, thus
      ensuring that the hack has effect on the final monolithic policy.
      
      P. S. This change also removes Allocator HAL access from isolated_app.
      Isolated app shouldn't have access to this HAL anyway.
      
      Test: Google Play Music plays back radios
      Test: Google Camera records video with sound and that video is then
            successfully played back with sound
      Test: YouTube app plays back clips with sound
      Test: YouTube in Chrome plays back clips with sound
      Bug: 34170079
      Change-Id: Id00bba6fde83e7cf04fb58bc1c353c2f66333f92
      7cda44f4
    • Alex Klyubin's avatar
      Vendor domains must not use Binder · f5446eb1
      Alex Klyubin authored
      On PRODUCT_FULL_TREBLE devices, non-vendor domains (except vendor
      apps) are not permitted to use Binder. This commit thus:
      * groups non-vendor domains using the new "coredomain" attribute,
      * adds neverallow rules restricting Binder use to coredomain and
        appdomain only, and
      * temporarily exempts the domains which are currently violating this
        rule from this restriction. These domains are grouped using the new
        "binder_in_vendor_violators" attribute. The attribute is needed
        because the types corresponding to violators are not exposed to the
        public policy where the neverallow rules are.
      
      Test: mmm system/sepolicy
      Test: Device boots, no new denials
      Test: In Chrome, navigate to ip6.me, play a YouTube video
      Test: YouTube: play a video
      Test: Netflix: play a movie
      Test: Google Camera: take a photo, take an HDR+ photo, record video with
            sound, record slow motion video with sound. Confirm videos play
            back fine and with sound.
      Bug: 35870313
      Change-Id: I0cd1a80b60bcbde358ce0f7a47b90f4435a45c95
      f5446eb1
  13. Mar 22, 2017
    • Jeff Vander Stoep's avatar
      Grant additional permissions for ASAN builds · 74434848
      Jeff Vander Stoep authored
      ASAN builds may require additional permissions to launch processes
      with ASAN wrappers. In this case, system_server needs permission to
      execute /system/bin/sh.
      
      Create with_asan() macro which can be used exclusively on debug
      builds. Note this means that ASAN builds with these additional
      permission will not pass the security portion of CTS - like any
      other debug build.
      
      Addresses:
      avc: denied { execute } for name="sh" dev="dm-0" ino=571
      scontext=u:r:system_server:s0 tcontext=u:object_r:shell_exec:s0
      tclass=file
      
      Test: lunch aosp_marlin-userdebug;
            cd system/sepolicy; mm SANITIZE_TARGET=address;
            Verify permissions granted using with_asan() are granted.
      Test: lunch aosp_marlin-userdebug;
            cd system/sepolicy; mm;
            Verify permissions granted using with_asan() are not granted.
      Test: lunch aosp_marlin-user;
            cd system/sepolicy; mm SANITIZE_TARGET=address;
            Verify permissions granted using with_asan() are not granted.
      Bug: 36138508
      Change-Id: I6e39ada4bacd71687a593023f16b45bc16cd7ef8
      74434848
  14. Mar 15, 2017
    • Jeff Vander Stoep's avatar
      Specify intermediates dir for sepolicy · d2053bd0
      Jeff Vander Stoep authored
      Policy intermediates are being placed in a seemingly random
      intermediates directories.
      
      Currently:
      out/target/product/marlin/obj_arm/SHARED_LIBRARIES/libsoftkeymaster_intermediates
      
      Instead, place intermediates in the sepolicy_intermediates dir.
      
      Test: intermediates now placed in:
      out/target/product/marlin/obj/ETC/sepolicy_intermediates
      Test: Marlin builds, no change to sepolicy on device.
      Bug: 36269118
      
      Change-Id: Ib6e9d9033be4dc8db0cc66cb47d9dc35d38703fe
      d2053bd0
    • Alex Klyubin's avatar
      Remove unused /selinux_version · e8243518
      Alex Klyubin authored
      This file is no longer needed because it was needed for supporting
      reloadable/dynamic SELinux policy which is no longer supported.
      
      Test: Clean build, flash, device boots without additional denials.
            Reboot to recovery works, no additional denials.
      Bug: 33642277
      Change-Id: I7fffe2fd12f586ed9b3ae54e35d17abdebbe7bce
      e8243518
    • Xin Li's avatar
      Fix build under GitC client. · ec6f393d
      Xin Li authored
      Test: build
      Bug: 36229129
      Change-Id: I0654ce44f344729b0bb1f8716afa151e134fdc6a
      ec6f393d
  15. Mar 13, 2017
    • Alex Klyubin's avatar
      Correct location of property_contexts for TREBLE devices · 9d59041f
      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.
      
      This change was previously reverted because it affected the location
      of property_contexts in recovery. Now that we have separate tagets for
      recovery (see ec78c377), this change
      no longer affects is recovery.
      
      Test: *_property_contexts in correct locations when
            PRODUCT_FULL_TREBLE is set to true and when it is set to false.
      
      Test: cts-tradefed run singleCommand cts --skip-device-info \
            --skip-preconditions --skip-connectivity-check \
            --abi arm64-v8a --module CtsSecurityHostTestCases \
            -t android.security.cts.SELinuxHostTest#testAospPropertyContexts
      
            This test was performed on bullhead (non A/B device) and sailfish
            (A/B device).
      
      Test: Clean build, flash, device boots with no additional denials.
            Rebooting to recovery, recovery boots fine with no denials.
            This test was performed on bullhead (non A/B device) and sailfish
            (A/B device).
      Bug: 36002573
      
      (cherry picked from commit 4cb628a3)
      
      Change-Id: I0b145c58669fb31bc39d57f36eef1190425a8328
      9d59041f
    • 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
  16. 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
  17. 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
  18. Mar 09, 2017
  19. 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
  20. 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
  21. 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
  22. 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
Loading