Commit graph

363 commits

Author SHA1 Message Date
Joel Galenson
8c72eea5ff Use user policy when checking neverallow rules.
When building userdebug or eng builds, we still want to build the user
policy when checking neverallow rules so that we can catch compile
errors.

Commit c0713e86 split out a helper function but lost one instance of
using user instead of the real variant.  This restores that one and
adds it to the neverallow check.

Bug: 74344625
Test: Added a rule that referred to a type defined only
in userdebug and eng and ensure we throw a compile error when building
userdebug mode.

Change-Id: I1a6ffbb36dbeeb880852f9cbac880f923370c2ae
(cherry picked from commit 053cb34130)
2018-03-08 09:57:54 -08:00
Tri Vo
9299d93942 Enable treble_sepolicy_tests against 27.0 release.
Bug: 69390067
Test: build sepolicy
Change-Id: I4fc7438e4f825281d93a2849be9d2db819bea4ca
2018-02-27 14:26:48 -08:00
Tri Vo
1406926d09 Refactor build rule for treble sepolicy tests.
Bug: 69390067
Test: policy builds
Change-Id: I9b29a88ec071a17fc429892b5a8720b15fcbcf32
2018-02-27 14:26:31 -08:00
Jeff Vander Stoep
3d4965b2e1 Use SELINUX_IGNORE_NEVERALLOWS flag to disable all tests
The intent of this flag is to disable tests during early device
bringup so that vendor drops can occur without build breakages.
When SELINUX_IGNORE_NEVERALLOWS=true also disable labeling tests
sepolicy_tests, and treble_sepolicy_tests.

Bug: 73322735
Test: build, verify known tests failures do not cause build breakage.
Change-Id: I3e7165938d4e34c066bfa0a20e68b7e02dae4a24
2018-02-14 05:11:59 +00:00
Yifan Hong
617e853560 Use PLATFORM_SEPOLICY_COMPAT_VERSIONS
This is a list of sepolicy versions that the framework supports.

Test: builds and boots

Bug: 67920434
Change-Id: I0f408fa3967214b47a64101760dbbb2542023dcf
2018-02-07 11:15:28 -08:00
Yifan Hong
3dff9ab470 Move PLATFORM_SEPOLICY_VERSION to make/core/config.mk
Test: m framework_compatibility_matrix.xml -j
Test: device boots

Bug: 67920434
Bug: 69390067

Change-Id: I3461873c22f704b9bbaa3a4e6f7e1df34d6b61a3
2018-02-07 11:15:28 -08:00
Tri Vo
fb55808232 Add 27.0 mapping file to system image.
Bug: 69390067
Test: 27.0.cil is installed to /system/etc/selinux/mapping/27.0.cil

Change-Id: If5b37ca7920a66b4fceaa031b6e8e9bafd18ac47
2018-02-06 18:17:07 +00:00
Jaekyun Seok
64ade65d17 Add tests for compatible property (1/2)
The feature of compatible property has its own neverallow rules and it
is enforced on devices launchig with Android P.

This CL changes hal_nfc to hal_nfc_server in neverallow rules because
sepolicy-analyze doesn't recognize it. Additionally one more neverallow
rule is added to restrict reading nfc_prop.

Bug: 72013705
Bug: 72678352
Test: 'run cts -m CtsSecurityHostTestCases' on walleye with
ro.product.first_api_level=28

Change-Id: I753cc81f7ca0e4ad6a2434b2a047052678f57671
2018-02-06 03:06:21 +09:00
Bowgo Tsai
741a70a058 Using a python script to build sepolicy
Current sepolicy CIL files are built by several command-line tools
in Android.mk. This change extracts some of the build logic into a
python script to relief the effort in Android.mk.

The first command is `build_sepolicy build_cil`. It's possible to add
more sub-commands under the build_sepolicy script in the future.

Bug: 64240127
Test: build bullhead/taimen
Change-Id: Ie0ae4fc5256a550c72954cde5d5dd213a22d159a
2018-02-05 18:22:12 +08:00
Bowgo Tsai
afbcf21bfb Renames nonplat_* to vendor_*
This change renames the non-platform sepolicy files on a DUT from
nonplat_* to vendor_*.

It also splits the versioned platform sepolicy from vendor_sepolicy.cil
to a new file /vendor/etc/selinux/plat_pub_versioned.cil. And only keeps
vendor customizations in vendor_sepolicy.cil.

Build variable BOARD_SEPOLICY_DIRS is also renamed to
BOARD_VENDOR_SEPOLICY_DIRS.

Bug: 64240127
Test: boot bullhead/taimen
Change-Id: Iea2210c9c8ab30c9ecbcd8146f074e76e90e6943
2018-02-05 18:21:55 +08:00
Bowgo Tsai
e2f6013543 Revert "Renames nonplat_* to vendor_*"
This reverts commit 9aa8496fc9.
Fix angler/bullhead boot failure.

Bug: 72787689
Test: build
Change-Id: I77671a74cd952544a1dbb3daabc2bb449a7c2cf2
2018-02-02 08:14:02 +08:00
Bowgo Tsai
d0cbb90509 Revert "Using a python script to build sepolicy"
This reverts commit 3506ad3f31.
Fix angler/bullhead boot failure.

Bug: 72787689
Test: build
2018-02-02 08:00:38 +08:00
Bowgo Tsai
3506ad3f31 Using a python script to build sepolicy
Current sepolicy CIL files are built by several command-line tools
in Android.mk. This change extracts some of the build logic into a
python script to relief the effort in Android.mk.

The first command is `build_sepolicy build_cil`. It's possible to add
more sub-commands under the build_sepolicy script in the future.

Bug: 64240127
Test: build and boot a device
Test: checks the content of $OUT/vendor/etc/selinux/vendor_sepolicy.cil
      is the same as before
Change-Id: I0b64f1088f413172e97b579b4f7799fa392762df
2018-01-31 14:37:47 +08:00
Bowgo Tsai
9aa8496fc9 Renames nonplat_* to vendor_*
This change renames the non-platform sepolicy files on a DUT from
nonplat_* to vendor_*.

It also splits the versioned platform sepolicy from vendor_sepolicy.cil
to a new file /vendor/etc/selinux/plat_pub_versioned.cil. And only keeps
vendor customizations in vendor_sepolicy.cil.

Build variable BOARD_SEPOLICY_DIRS is also renamed to
BOARD_VENDOR_SEPOLICY_DIRS.

Bug: 64240127
Test: boot an existing device
Change-Id: Iea87a502bc6191cfaf8a2201f29e4a2add4ba7bf
2018-01-31 14:37:39 +08:00
Joel Galenson
5988b5659a Improve neverallow error messages and allow disabling them on userdebug builds.
This patch adds a flag that can be used to ignore neverallow rules.
By adding
SELINUX_IGNORE_NEVERALLOWS := true
into the BoardConfig.mk file, neverallow violations will be ignored
silently.  This flag can only be enabled on userdebug and eng builds.

Users of this flag should be very careful.  Since it does not work on
user builds, it must be disabled to pass CTS, and enabling it for
too long could hide issues that need to be addressed.

As a happy side effect, this patch should also improve the error
messages when violating a neverallow rules.  Specifically, the file
and line number should be correct.

Bug: 70950899
Bug: 33960443
Test: Built walleye-{user,eng} with and without this new option and
a neverallow violation.  Built policy for all targets.

Change-Id: Id0d65123cdd230d6b90faa6bb460d544054bb906
2018-01-12 09:11:59 -08:00
Jaekyun Seok
e49714542e Whitelist exported platform properties
This CL lists all the exported platform properties in
private/exported_property_contexts.

Additionally accessing core_property_type from vendor components is
restricted.
Instead public_readable_property_type is used to allow vendor components
to read exported platform properties, and accessibility from
vendor_init is also specified explicitly.

Note that whitelisting would be applied only if
PRODUCT_COMPATIBLE_PROPERTY is set on.

Bug: 38146102
Test: tested on walleye with PRODUCT_COMPATIBLE_PROPERTY=true
Change-Id: I304ba428cc4ca82668fec2ddeb17c971e7ec065e
2018-01-10 16:15:25 +00:00
Tom Cherry
f68b4c67d7 Use property_info_checker instead of checkfc and fc_sort for properties
1) fc_sort is not needed as there is no reason to sort system
   properties, so this is removed and replaced with a simply copy
2) Use the new property_info_checker instead of checkfc for
   validating property information.  This supports exact match
   properties and will be extended to verify property schemas in the
   future.

Bug: 36001741
Test: verify bullhead's property contexts correct
Test: verify faulty property contexts result in failures
Change-Id: Id9bbf401f385206e6907449a510e3111424ce59e
2018-01-04 09:49:39 -08:00
Bo Hu
283dd9ebb9 Revert "Renames nonplat_* to vendor_*"
This reverts commit 8b562206bf.

Reason for revert: broke mac build

b/70273082

FAILED: out/target/product/generic_x86/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil
/bin/bash -c "(out/host/darwin-x86/bin/version_policy -b out/target/product/generic_x86/obj/FAKE/selinux_policy_intermediates/plat_pub_policy.cil -t out/target/product/generic_x86/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_policy_raw.cil -n 10000.0 -o out/target/product/generic_x86/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil.tmp ) && (grep -Fxv -f out/target/product/generic_x86/obj/ETC/plat_pub_versioned.cil_intermediates/plat_pub_versioned.cil out/target/product/generic_x86/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil.tmp > out/target/product/generic_x86/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil ) && (out/host/darwin-x86/bin/secilc -m -M true -G -N -c 30 		out/target/product/generic_x86/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil out/target/product/generic_x86/obj/ETC/plat_pub_versioned.cil_intermediates/plat_pub_versioned.cil out/target/product/generic_x86/obj/ETC/10000.0.cil_intermediates/10000.0.cil out/target/product/generic_x86/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil -o /dev/null -f /dev/null )"
Parsing out/target/product/generic_x86/obj/FAKE/selinux_policy_intermediates/plat_pub_policy.cil
Parsing out/target/product/generic_x86/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_policy_raw.cil
grep: out of memory

Change-Id: I14f0801fdd6b9be28e53dfcc0f352b844005db59
2017-12-07 00:16:13 +00:00
kaichieh
b616688eda Renames nonplat_* to vendor_*
am: 8b562206bf

Change-Id: I5df30ebf4f0ba450ff3da8e54c76da23af955105
2017-12-06 10:11:42 +00:00
kaichieh
8b562206bf Renames nonplat_* to vendor_*
This change renames the non-platform sepolicy files on a DUT from
nonplat_* to vendor_*.

It also splits the versioned platform sepolicy from vendor_sepolicy.cil
to a new file /vendor/etc/selinux/plat_pub_versioned.cil. And only keeps
vendor customizations in vendor_sepolicy.cil.

Build variable BOARD_SEPOLICY_DIRS is also renamed to
BOARD_VENDOR_SEPOLICY_DIRS.

Bug: 64240127
Test: boot an existing device
Change-Id: I53a9715b2f9ddccd214f4cf9ef081ac426721612
2017-12-06 12:57:19 +08:00
Jeffrey Vander Stoep
54242ffae1 Merge "Prepare treble_sepolicy_tests for inclusion in CTS"
am: 18cb4daed7

Change-Id: Ibbaef489e45195aa105b6df09bb7378481ab2d06
2017-11-21 21:15:41 +00:00
Jeff Vander Stoep
fe0910c9ad Prepare treble_sepolicy_tests for inclusion in CTS
Unconditionally compile treble_sepolicy_tests. Make compat
files conditional on running the compat tests.

Bug: 37008075
Test: build
Change-Id: Ib3aee6e93d285ca141803a13958fbcb38b891b68
2017-11-20 22:29:38 +00:00
Xin Li
c667a0ed64 Merge commit 'd9664064dd09ae254aa3e6ce28fec5fde68c1fb6' into HEAD
Change-Id: Icec8dfff5cff17cf1b557882db62b148a7218b98
2017-11-14 11:46:58 -08:00
Steven Moreland
763697d425 Use PRODUCT_SEPOLICY_SPLIT for full Treble.
PRODUCT_FULL_TREBLE is being broken up into smaller,
more manageable components.

Bug: 62019611
Test: manual
Change-Id: I9b65f120851d9ea134a0059a417f0282777717fc
2017-11-10 10:25:23 -08:00
Dan Cashman
c96721eaa9 Include 26.0 compat file on system image.
This file is necessary for using an mr1 system image in conjunction
with an oc-dev vendor image.  This is currently needed by GSI testing,
for example.

(cherry-pick of commit: 03596f28a4)

Bug: 66358348
Test: File is included on system image.
Change-Id: Ie694061d08acf17453feb596480e42974f8c714c
2017-10-18 15:52:54 -07:00
Jeffrey Vander Stoep
5b322d4e4e Merge "Allow redeclaring typeattributes" am: dcee57b8c2 am: 7242f16830
am: a08b925aea

Change-Id: Iadeb02947c4aefd1821b8e3294ad9fd801f8b0c1
2017-10-08 04:18:54 +00:00
Jeff Vander Stoep
74b7071be6 Allow redeclaring typeattributes
Allows partners to add a new attribute definition to their public
policy without causing a compatibility failure with the AOSP system
image.

Bug: 67092827
Bug: 37915794
Test: build and boot aosp_sailfish with new type declared in public
    policy

Change-Id: I015c26fa7c399423e8a6e7079b5689007d031479
2017-10-06 17:06:04 -07:00
Jeff Vander Stoep
f73b714ef9 Merge "Fix typo and Mac build" am: 7a83d44f7f am: eaee05e1a3
am: 0b63c67aca

Change-Id: I06b0180e203857945152027d5c9dfb92fc7200db
2017-10-05 03:24:36 +00:00
Jeff Vander Stoep
e06e4c1efb Fix typo and Mac build
FAILED:
out/target/product/sailfish/obj/ETC/treble_sepolicy_tests_intermediates/treble_sepolicy_tests
Error: library-path out/host/darwin-x86/lib64/libsepolwrap.so
does not exist

Note, fixing here instead of reverting to avoid reverting
changes in CTS.

Test: ctate testing on Mac
Change-Id: I95f483b152d9bece1a16267cbc49eedb1f902990
2017-10-05 01:20:28 +00:00
Jeff Vander Stoep
3ebd69905f Merge "Prepare python tests to be run in CTS" am: dbe092538c am: 3d4cbd6059
am: a1501d9c51

Change-Id: I23ae1f2efa1546462e27ab32e8a7f03cdae91cc8
2017-10-04 21:52:32 +00:00
Jeff Vander Stoep
3ca843a57d Prepare python tests to be run in CTS
Bug: 37008075
Test: build, all tests pass. Modify some attributes locally to
    cause tests to fail (verify that they are actually working).
Change-Id: If9f9ece61dff835f38ef9c8a57f5a7baddbae5cd
2017-10-04 19:46:12 +00:00
Jeff Vander Stoep
be60f71fe2 Merge "Move python sepolicy tests to embedded launcher" am: 1e8804101b am: f2d1003c96
am: a6b8f4b1da

Change-Id: Ic64d56e86e455c8cb5e814c359aaee568618d7e0
2017-10-04 19:05:28 +00:00
Jeff Vander Stoep
e9777e3402 Move python sepolicy tests to embedded launcher
This is a necessary for enforcing these tests in CTS.

Bug: 37008075
Test: build
Change-Id: I36b4ce71c26a0ba01cd0289fe363f0a9f7db1214
(cherry picked from commit 8d614b3f81)
2017-10-04 17:09:30 +00:00
Daniel Cashman
841a7ee6f5 Merge "Revert "Include 26.0 compat file on system image."" am: 00cac07f11 am: c1bd5c6b5c
am: 005404eb6b

Change-Id: I602dae097b7c8eabb233fed2657cf6ad23cbf1ed
2017-10-03 02:16:00 +00:00
Daniel Cashman
41ce23481c Revert "Include 26.0 compat file on system image."
This reverts commit f9cd76b1d8.

Change-Id: I4f753f3159b422fbca94be78e620bee2c39de38a
2017-10-03 00:07:11 +00:00
Dan Cashman
5e65338905 Correct double inclusion of sepolicy_tests due to bad merge.
Bug: 67018095
Test: None. Relying on treehugger.
Change-Id: I68221183cf56b666c81f224a533b56a0761f8c15
2017-10-02 15:25:10 -07:00
Dan Cashman
f9cd76b1d8 Include 26.0 compat file on system image.
This file is necessary for using an mr1 system image in conjunction
with an oc-dev vendor image.  This is currently needed by GSI testing,
for example.

(cherry-pick of commit: 03596f28a4)

Bug: 66358348
Test: File is included on system image.
Change-Id: I3a6b7ed5edf1c07941bbf835e70f2ae8d03fee25
2017-10-02 14:21:57 -07:00
Dan Cashman
1192061c3b Include 26.0 compat file on system image.
am: 03596f28a4

Change-Id: I5200386d3125a955594bdca07bf85f9a918b1ed5
2017-10-02 20:48:39 +00:00
Dan Cashman
03596f28a4 Include 26.0 compat file on system image.
This file is necessary for using an mr1 system image in conjunction
with an oc-dev vendor image.  This is currently needed by GSI testing,
for example.

Bug: 66358348
Test: File is included on system image.
Change-Id: I3a6b7ed5edf1c07941bbf835e70f2ae8d03fee25
2017-09-28 15:06:39 -07:00
William Roberts
d1ee81203d Merge changes from topic "locale-fix" am: 5bb3c603f1 am: 65c3654b59
am: bd2e729c8c

Change-Id: I3ec7360adf7e13eb1d0b174ed9fc5eab6d44e3c0
2017-09-28 20:59:34 +00:00
Dan Cashman
df5469d864 Sync internal master and AOSP sepolicy.
Bug: 37916906
Test: Builds 'n' boots.
Change-Id: Ia1d86264446ebecc1ca79f32f11354921bc77668
Merged-In: I208ec6a864127a059fb389417a9c6b259d7474cb
2017-09-27 18:55:47 -07:00
William Roberts
3949fe234a nonplat_property_contexts: use fc_sort vs sort
sort respects locale settings, so the value of LC_ALL can affect
how sort orders things. This can cause labeling issues.

More information on locale and sort can be found via:
  * locale(1) - man 1 locale
  * sort(1) - man 1 sort
  * https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28539

Rather than deal with this locale setting use fc_sort on
property contexts. This also has the side-effect of
stripping comments, and thus sed can be dropped.

Test: This was tested by:
  * comparing outputs to previous runs
  * compile tested *only*.

Change-Id: I1e1eb4dff76f717b5f82f697e677a108abb69892
Signed-off-by: William Roberts <william.c.roberts@intel.com>
2017-09-27 12:03:46 -07:00
William Roberts
4b44d24961 plat_property_contexts: use fc_sort vs sort
sort respects locale settings, so the value of LC_ALL can affect
how sort orders things. Issues have surfaced when CTS build
servers locale differs from image build server locale. And thus
the prologue of property_contexts differs with what CTS was
expecting.

More information on locale and sort can be found via:
  * locale(1) - man 1 locale
  * sort(1) - man 1 sort
  * https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28539

Rather than deal with this locale setting use fc_sort on
property contexts. This also has the side-effect of
stripping comments, and thus sed can be dropped.

Test: This was tested by:
  * comparing outputs to previous runs
  * booting the x86-64 emulator

Change-Id: I144ef549cc11d9c61849ffc0e1b1b000f1b8d1a8
Signed-off-by: William Roberts <william.c.roberts@intel.com>
2017-09-27 12:03:46 -07:00
Dan Cashman
91d398d802 Sync internal master and AOSP sepolicy.
Bug: 37916906
Test: Builds 'n' boots.
Change-Id: Ia1d86264446ebecc1ca79f32f11354921bc77668
Merged-In: I208ec6a864127a059fb389417a9c6b259d7474cb
2017-09-26 14:38:47 -07:00
Jeff Vander Stoep
1109999ac0 Move python scripts to python_binary_host build rule
Fixes: 65263013
Test: build
Merged-In: I0ec412481c5990927fcbee7c4303bee2da876210
Change-Id: I0ec412481c5990927fcbee7c4303bee2da876210
(cherry picked from commit 5c5e79cdf6)
2017-09-24 20:48:04 -07:00
Jeff Vander Stoep
a7d2c5bf17 Move python scripts to python_binary_host build rule
Fixes: 65263013
Test: build
Merged-In: I0ec412481c5990927fcbee7c4303bee2da876210
Change-Id: I0a5b9a80e988fcd16a29807ed83b2c65bba9000f
2017-09-23 14:45:02 -07:00
Hung-ying Tyan
f3a6adfd49 Don't create nonplat_service_contexts on full_treble devices am: e83f1e5609 am: 0d5bca443a
am: e06f443c59

Change-Id: Ib2245d6767275440d9c0ad775222d8c923e0281f
2017-09-07 16:44:14 +00:00
Hung-ying Tyan
0d5bca443a Don't create nonplat_service_contexts on full_treble devices
am: e83f1e5609

Change-Id: I6c7a9a6c52f670a8f18240def3b0b1f416001236
2017-09-07 16:40:14 +00:00
Hung-ying Tyan
e83f1e5609 Don't create nonplat_service_contexts on full_treble devices
On full Treble devices, servicemanager should only host services
served from processes on /system; nonplat_service_contexts
should not be created at all in this case.

Bug: 36866029
Test: Build marlin and make sure nonplat_service_contexts is not
      created.

Change-Id: Id02c314abbb98fc69884198779488c52231d22c3
Merged-In: Id02c314abbb98fc69884198779488c52231d22c3
2017-09-06 22:15:43 +08:00
Michael Wright
cdfffa41a1 Merge "O MR1 is API 27" into oc-mr1-dev
am: 2049efa441

Change-Id: I2e2d0983d701bed984ccd6989fc07d520e52aa0d
2017-08-26 02:42:14 +00:00
Dan Cashman
b1b36bf214 Add sepolicy definitions.mk and create policy.conf function.
am: 36ee91d4b5

Change-Id: I9af35533587e962c63b6dd2543b047bf9899fb5e
2017-08-25 07:17:30 +00:00
Dan Cashman
36ee91d4b5 Add sepolicy definitions.mk and create policy.conf function.
Bug: 36899958
Test: Builds 'n' boots.
Change-Id: I5836a18f9d0a9a976dda7304045e3b9e1e84565e
Merged-In: I5836a18f9d0a9a976dda7304045e3b9e1e84565e
(cherry picked from commit c0713e8679)
2017-08-25 15:08:45 +08:00
Jeff Vander Stoep
822631baa3 Merge "move build dependencies to sepolicy" am: 99cbe530c1 am: 5d478edd41
am: b519a9ad07

Change-Id: I30b5b25d3667fd2e0bc3e8efc2b4dc7ff403c171
2017-08-23 22:09:17 +00:00
Jeff Vander Stoep
5d478edd41 Merge "move build dependencies to sepolicy"
am: 99cbe530c1

Change-Id: I008a9509e758cee7802030e1146bbf140b31ba78
2017-08-23 21:58:36 +00:00
Michael Wright
a9bfbbfec7 O MR1 is API 27
Bug: 64982450
Test: manual
Change-Id: Ic5d25b8a12271e5bfa71e30843a36fb643b914ff
2017-08-23 13:52:40 -07:00
Jeff Vander Stoep
13fb5ed305 move build dependencies to sepolicy
Some selinux build packages are defined in embedded.mk,
others are defined in system/sepolicy/Android.mk. Move all
to sepolicy as a dependency of the phony package selinux_policy
which is defined in embedded.mk.

Test: build Marlin (Treble) and Angler (non-Treble)
Merged-In: Ib0443ad3da600447fbb51f2e9f91de04dcf5f9f6
Change-Id: Ib0443ad3da600447fbb51f2e9f91de04dcf5f9f6
2017-08-23 05:27:03 +00:00
Dan Cashman
78b3d573da Move compatibility files out of prebuilts dir.
The treble compatibility tests check for policy differences between old
and new policy.  To do this correctly, we must not modify the policy which
represents the older policies.  Move the files meant to be changed to a
different location from the ones that are not meant to be touched to avoid
any undesired changes to old policy, e.g. commit:
2bdefd65078d890889672938c6f0d2accdd25bc5

Bug: 36899958
Test: Build-time tests build.
Change-Id: I8fa3947cfae756f37556fb34e1654382e2e48372
2017-08-14 09:47:37 -07:00
Dan Cashman
7f7c3b8229 Add 26.0 api compatibility check infrastructure.
Add support to the treble_sepolicy_tests suite that explicitly look at
the old and current policy versions, as well as the compatibility file,
to determine if any new types have been added without a compatibility
entry.  This first test catches the most common and likely changes that
could change the type label of an object for which vendor policy may have
needed access.  It also should prove the basis for additional compatibility
checks between old and new policies.

Bug: 36899958
Test: Policy builds and tests pass.
Change-Id: I609c913e6354eb10a04cc1a029ddd9fa0e592a4c
2017-08-08 13:31:50 -07:00
Dan Cashman
c0713e8679 Add sepolicy definitions.mk and create policy.conf function.
Bug: 36899958
Test: Builds 'n' boots.
Change-Id: I5836a18f9d0a9a976dda7304045e3b9e1e84565e
2017-07-11 11:16:50 -07:00
Dan Cashman
b04df6e309 Make sure platform policy builds with compatible versions.
Platform SELinux policy may be updated without a corresponding
update to non-platform policy.  This is meant to be accomplished by
maintaining a compatibility mapping file which will be built along
with the current platform policy to link older non-platform policy.

Introduce an example vendor policy built from 26.0 public policy and
make sure that the current platform policy and mapping file, for that
version, build with it.  Add this as a dependency for the
selinux_treble_tests, which are meant to ensure treble properties,
ultimately to provide this compatibility guarantee.

Bug: 36899958
Test: Current platform policy builds with oc-dev vendor policy and
oc-dev mapping file.  Removed private type with no effect.  Removed
public type without corresponding mapping entry causes build to fail.

Change-Id: I7994ed651352e2da632fc91e598f819b64c05753
2017-07-10 14:49:03 -07:00
Sandeep Patil
3034b7779b Merge changes from topic 'fix-neverallow-violation' into oc-dev am: 3692b3189e am: 760674da63
am: e729505e63

Change-Id: Icedeefca21d21654af5e4fa2c7ddce389f1a96ea
2017-06-16 17:34:14 +00:00
Sandeep Patil
e729505e63 Merge changes from topic 'fix-neverallow-violation' into oc-dev am: 3692b3189e
am: 760674da63

Change-Id: Ibf3d635255104966af4d0b3004cee8babeffc4f9
2017-06-16 17:28:11 +00:00
Sandeep Patil
760674da63 Merge changes from topic 'fix-neverallow-violation' into oc-dev
am: 3692b3189e

Change-Id: Ide1a5455e2b279ac1532bbdb88e852dba3ee2b28
2017-06-16 17:22:47 +00:00
Dan Cashman
ccdd6e11dc Exempt ASAN from selinux build-checks.
ASAN makes use of shenanigans that violate our policy best-practices.
This is by design.  Exempt them from these tests to get it building
again.

Bug: 37740897
Test: Builds with ASAN enabled.
Change-Id: Iffde28c2741466da5862b2dfe1fffa2c0d93caeb
2017-06-15 11:24:29 -07:00
TreeHugger Robot
b8ad31d28f Merge "Assert filesystem types must have their associated attr" 2017-06-14 17:43:35 +00:00
Sandeep Patil
cfb6f35231 build: run neverallow checks on platform sepolicy
This will prevent us from breaking our own neverallow rules
in the platform sepolicy regardless of vendor policy adding
exceptions to the neverallow rules using "*_violators" attributes

Bug: 62616897
Bug: 62343727

Test: Build policy for sailfish
Test: Build policy with radio to rild socket rule enabled for all
      and ensure the build fails

Change-Id: Ic66ec3e10c76a7c9a17669e0d3deb3a1c7b00809
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-06-14 10:01:34 -07:00
Jeff Vander Stoep
11d096fc99 Assert filesystem types must have their associated attr
Test that:
- File types on /sys have attr sysfs_type
- File types on /sys/kernel/debug have attr debugfs_type
- File types on /data have attr data_file_type

Test: build policy
Change-Id: Ie4f1f1c7e5345da0999082962f084fdac6b85428
2017-06-13 16:04:48 -07:00
Jeff Vander Stoep
78c58c7936 Build split file_contexts for recovery am: b236eb6ca2
am: 77fe1de7d1

Change-Id: I71b4bca350a9a29dd45dfafe8c3d1938cb54a46f
2017-06-13 18:02:42 +00:00
Jeff Vander Stoep
77fe1de7d1 Build split file_contexts for recovery
am: b236eb6ca2

Change-Id: I60a92781a5b923889e627d73e8922aca2607b67b
2017-06-13 17:59:09 +00:00
Jeff Vander Stoep
b236eb6ca2 Build split file_contexts for recovery
[    7.674739] selinux: selinux_android_file_context: Error getting
file context handle (No such file or directory)

Bug: 62564629
Test: build and flash marlin. Successfully switch between regular
    and recovery modes

Change-Id: I0f871f8842d95322c844fb7b13ad1b4b42578e35
2017-06-13 15:38:55 +00:00
Jeff Vander Stoep
8265811608 Move non-treble devices to split file_contexts
am: 7a68c5ae4c

Change-Id: Ide9c5ccdc2002972f311c9829c573b98f12fea44
2017-06-12 22:14:28 +00:00
Jeff Vander Stoep
7a68c5ae4c Move non-treble devices to split file_contexts
This change is primarily to fix CTS which checks file ordering of
file_contexts. Having two separate means of loading file_contexts
has resulted in ordering variations.

Previously the binary file_contexts was preferred since it
loaded faster. However with the move to libpcre2, there is no
difference in loading time between text and binary file_contexts.
This leaves us with build system complexity with no benefit.
Thus removing this unnecessary difference between devices.

Bug: 38502071
Test: build and boot non-Treble Bullhead, run CTS tests below
Test: build and boot Treble Marlin, run CTS tests below
Test: cts-tradefed run singleCommand cts --skip-device-info \
    --skip-preconditions --skip-connectivity-check --abi arm64-v8a \
    --module CtsSecurityHostTestCases \
    -t android.security.cts.SELinuxHostTest#testAospFileContexts
Test: cts-tradefed run singleCommand cts --skip-device-info \
    --skip-preconditions --skip-connectivity-check --abi arm64-v8a \
    --module CtsSecurityHostTestCases \
    -t android.security.cts.SELinuxHostTest#testValidFileContexts
Change-Id: I088b3aeafaaab320f6658feb058a1fb89cbb65e1
2017-06-10 15:14:10 +00:00
Jeff Vander Stoep
f965a0a176 Move non-treble devices to split file_contexts
This change is primarily to fix CTS which checks file ordering of
file_contexts. Having two separate means of loading file_contexts
has resulted in ordering variations.

Previously the binary file_contexts was preferred since it
loaded faster. However with the move to libpcre2, there is no
difference in loading time between text and binary file_contexts.
This leaves us with build system complexity with no benefit.
Thus removing this unnecessary difference between devices.

Bug: 38502071
Test: build and boot non-Treble Bullhead, run CTS tests below
Test: build and boot Treble Marlin, run CTS tests below
Test: cts-tradefed run singleCommand cts --skip-device-info \
    --skip-preconditions --skip-connectivity-check --abi arm64-v8a \
    --module CtsSecurityHostTestCases \
    -t android.security.cts.SELinuxHostTest#testAospFileContexts
Test: cts-tradefed run singleCommand cts --skip-device-info \
    --skip-preconditions --skip-connectivity-check --abi arm64-v8a \
    --module CtsSecurityHostTestCases \
    -t android.security.cts.SELinuxHostTest#testValidFileContexts
Change-Id: I088b3aeafaaab320f6658feb058a1fb89cbb65e1
2017-06-10 14:30:57 +00:00
Dan Cashman
c234ba3805 Hide grep filename output.
checkseapp does not expect filenames before the appearance of neverallow
rules against which to check.  They had previously been hidden by default
because they were only gathered from one file, but with the addition of
the BOARD_PLAT_[PUBLIC|PRIVATE]_SEPOLICY_DIRS to allow for /system policy
extensions, this may change.

Bug: 36467375
Bug: 62357603
Test: Builds with seapp_contexts extension.
Change-Id: I270bd60ae368aa3c082299d57c4bf12936ac2073
2017-06-06 08:15:01 -07:00
Jeff Vander Stoep
c85b859648 Run Treble sepolicy tests at build time
am: 1fc0682ec6

Change-Id: I5f6adf8043686e1dbc5327b6845d710e6f673256
2017-06-06 03:54:42 +00:00
Jeff Vander Stoep
1fc0682ec6 Run Treble sepolicy tests at build time
Bug: 37008075
Test: build policy on Marlin
Change-Id: I53748f94c5df66fa17a53e7d0bed1be6b8603544
(cherry picked from commit e1ddc6df75)
2017-06-05 08:09:32 -07:00
Jeff Vander Stoep
e1ddc6df75 Run Treble sepolicy tests at build time
Bug: 37008075
Test: build policy on Marlin
Change-Id: I53748f94c5df66fa17a53e7d0bed1be6b8603544
2017-06-02 16:11:52 -07:00
Dan Cashman
11b239f0b0 Merge changes I397ca4e7,I38efe224 into oc-dev
am: 33d7e90b51

Change-Id: I72b51db1d65df6a82b396187e982df1e4336c6be
2017-05-26 02:46:50 +00:00
Dan Cashman
51455fe977 Restrict BOARD_PLAT_[PUBLIC|PRIVATE]_SEPOLICY_DIRS to one dir.
These directories were added to allow for partner extensions to the
android framework without needing to add changes to the AOSP global
sepolicy.  There should only ever be one owner of the framework and
corresponding updates, so enforce this restriction to prevent
accidental accrual of policy in the system image.

Bug: 36467375
Test: Add public and private files to policy and verify that they are
added to the appropriate policy files.  Also test that specifying
multiple directories for public or private results in an error.

Change-Id: I397ca4e7d6c8233d1aefb2a23e7b44315052678f
Merged-In: I397ca4e7d6c8233d1aefb2a23e7b44315052678f
(cherry picked from commit 1633da06af)
2017-05-25 22:10:45 +08:00
Dan Cashman
1b0a71f308 Add BOARD_PLAT_[PUBLIC|PRIVATE]_SEPOLICY_DIRS
Add new build variables for partner customization (additions) to platform sepolicy.
This allows partners to add their own policy without having to touch the AOSP sepolicy
directories and potentially disrupting compatibility with an AOSP system image.

Bug: 36467375
Test: Add public and private files to sailfish policy and verify that they are
added to the appropriate policy files, but that the policy is otherwise identical.
Also add private/mapping/*.cil files in both locations and change the BOARD_SEPOLICY_VERS
to trigger use of prebuilt mapping files and verify that they are appropriately
combined and built in policy.

Change-Id: I38efe2248520804a123603bb050bba75563fe45c
Merged-In: I38efe2248520804a123603bb050bba75563fe45c
(cherry picked from commit f893700c73)
2017-05-25 22:10:36 +08:00
Dan Cashman
1633da06af Restrict BOARD_PLAT_[PUBLIC|PRIVATE]_SEPOLICY_DIRS to one dir.
These directories were added to allow for partner extensions to the
android framework without needing to add changes to the AOSP global
sepolicy.  There should only ever be one owner of the framework and
corresponding updates, so enforce this restriction to prevent
accidental accrual of policy in the system image.

Bug: 36467375
Test: Add public and private files to policy and verify that they are
added to the appropriate policy files.  Also test that specifying
multiple directories for public or private results in an error.

Change-Id: I397ca4e7d6c8233d1aefb2a23e7b44315052678f
2017-05-23 14:47:16 -07:00
Ian Pedowitz
d95ded6fde Merge "Revert "Revert "O is API 26""" into oc-dev am: 0f406a7a7f
am: ed4841cea0

Change-Id: I04a5cd25af698a06101d202e2815bf5f3f39856e
2017-05-16 05:09:19 +00:00
Ian Pedowitz
ed4841cea0 Merge "Revert "Revert "O is API 26""" into oc-dev
am: 0f406a7a7f

Change-Id: I39ba184fe5b89a6cace60a4ea31f42e3e9940fce
2017-05-16 04:07:21 +00:00
Dan Cashman
5e9451b1cf Fix ASAN build.
Test: Build with ASAN on.
Bug: 36467375
Change-Id: Id6a07b7bd48f39326b7c7ab47cfde396f7cfd033
2017-05-10 17:26:02 -07:00
Dan Cashman
f893700c73 Add BOARD_PLAT_[PUBLIC|PRIVATE]_SEPOLICY_DIRS
Add new build variables for partner customization (additions) to platform sepolicy.
This allows partners to add their own policy without having to touch the AOSP sepolicy
directories and potentially disrupting compatibility with an AOSP system image.

Bug: 36467375
Test: Add public and private files to sailfish policy and verify that they are
added to the appropriate policy files, but that the policy is otherwise identical.
Also add private/mapping/*.cil files in both locations and change the BOARD_SEPOLICY_VERS
to trigger use of prebuilt mapping files and verify that they are appropriately
combined and built in policy.
Change-Id: I38efe2248520804a123603bb050bba75563fe45c
2017-05-09 09:51:07 -07:00
Ian Pedowitz
998c2ff9d5 Merge "Revert "O is API 26"" into oc-dev
am: 47859a9370

Change-Id: I3ec67ae45f165601f22f7ebb446fc626300ee1b6
2017-05-04 00:18:37 +00:00
Ian Pedowitz
4816b8f00a Revert "Revert "O is API 26""
This reverts commit 6b04a961b4.

Bug: 37480230
Bug: 37896931
Bug: 37355569
Change-Id: I24ee1b4f0f23262cae25b2f575da9f16f4ebec34
2017-05-04 00:09:57 +00:00
Ian Pedowitz
6b04a961b4 Revert "O is API 26"
This reverts commit 8713882bb8.

Reason for revert:  b/37355569

Bug: 37480230
Bug: 37896931
Bug: 37355569
Change-Id: Ic07d948fd0b4a0a8434e1f4f0c8e559c4258cf5e
2017-05-03 22:00:06 +00:00
Michael Wright
a51923896a Merge "O is API 26" into oc-dev
am: 7cc3f0a909

Change-Id: Ie5fbe081e35116ee4751b43f323b83ac56993870
2017-05-02 22:17:43 +00:00
Michael Wright
8713882bb8 O is API 26
Bug: 37480230
Bug: 37896931
Test: build, boot
Change-Id: Ib8d4309d37b8818163a17e7d8b25155c4645edcf
2017-05-02 20:50:49 +01:00
Andreas Gampe
3ddc78b132 Sepolicy: Disable leak sanitizer for checkpolicy
Temporary workaround.

Bug: 37755687
Test: ASAN_OPTIONS= SANITIZE_HOST=address m
Change-Id: I001a42ea6463a1e137e1f5328755596f986323de
2017-04-28 17:52:35 +00:00
Jeff Vander Stoep
5edd96d915 Android.mk: fix dependency typo
Bug: 37646565
Test: build marlin-userdebug
Change-Id: I3325d027fa7bdafb48f1f53ac052f2a68352c1dc
2017-04-24 16:49:41 -07:00
Jeff Vander Stoep
b87876937b Retain neverallow rules in CIL files
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
2017-04-24 13:43:22 -07:00
Jeff Vander Stoep
748cae865d secilc: expand generated attributes on non-treble devices
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
2017-04-14 22:37:09 -07:00
Jeffrey Vander Stoep
9bdb66b25c Merge "secilc: expand generated attributes" into oc-dev 2017-04-13 18:11:08 +00:00
Martijn Coenen
f6daa78a82 Merge "Add hwservice_contexts and support for querying it." into oc-dev 2017-04-13 03:34:48 +00:00
Martijn Coenen
3ea47b9249 Add hwservice_contexts and support for querying it.
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
2017-04-12 18:07:12 -07:00
Jeff Vander Stoep
ac171b4437 secilc: expand generated attributes
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
2017-04-12 17:01:54 -07:00
Dan Cashman
4d24a77551 Fix build part 2. Always create platform_mapping_file.
commit 552fb53712 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
2017-04-12 14:28:34 -07:00
Dan Cashman
552fb53712 Fix build: encase $(platform_mapping_file) module in treble block.
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
2017-04-12 14:06:30 -07:00