Commit graph

17676 commits

Author SHA1 Message Date
Jeff Vander Stoep
9ec16c1c34 Merge "Remove unused *_tmpfs types"
am: 586c2cdfdf

Change-Id: I575c948a9143a3d3926ef4bb8b758eab6c928c32
2019-01-31 11:08:34 -08:00
Treehugger Robot
586c2cdfdf Merge "Remove unused *_tmpfs types" 2019-01-31 18:59:43 +00:00
Cheney Ni
3a02820b99 Merge "Add Bluetooth Audio HAL interface V2 as hal_audio_hwservice"
am: eced7cb78d

Change-Id: I61e1949964df49f68a2a053309606d11a69770f1
2019-01-31 10:29:28 -08:00
Treehugger Robot
eced7cb78d Merge "Add Bluetooth Audio HAL interface V2 as hal_audio_hwservice" 2019-01-31 18:17:07 +00:00
Nick Kralevich
81ce74ac25 Merge "Allow permissions needed for gdb debugging"
am: ecf787e85f

Change-Id: I85fd2e717fe087cf08262b0d4b4866052c8eb48c
2019-01-30 22:11:14 -08:00
Treehugger Robot
ecf787e85f Merge "Allow permissions needed for gdb debugging" 2019-01-31 05:58:55 +00:00
Jiyong Park
46298e157f Allow init to mount on /bionic in recovery mode
am: cd6a6a0933

Change-Id: I8ab4fbf121144b5e88e92683543e517888ecb6ef
2019-01-30 21:00:42 -08:00
Jiyong Park
cee3eecccd init can call setns
am: 9d9333ac86

Change-Id: I7055d04b08f81b08a0bfe5b371723204c459f698
2019-01-30 21:00:29 -08:00
Jiyong Park
b546607a27 Label the bootstrap linker and bionic mount points
am: 4b3f2c6245

Change-Id: Ia90d5b6960272124e6a19ddb5c0923ecce105073
2019-01-30 21:00:17 -08:00
Jiyong Park
cd6a6a0933 Allow init to mount on /bionic in recovery mode
The mount points under /bionic are rootfs in recovery mode. Init should
be able to bind-mount the bootstrap Bionic to the mount points.

Bug: 120266448
Test: adb reboot recovery; phone enters into the recovery mode
Change-Id: I57aed268eac08a5fb3609750bf10cd8d6e97347a
2019-01-31 13:44:21 +09:00
Jiyong Park
9d9333ac86 init can call setns
init now creates two mount namespaces one for pre-apexd processes and
the other for post-apexd processes. This is to mount different files to
the same mount point at /bionic. For pre-apexd processes, the bootstrap
Bionic is mounted. For post-apexd processes, the default Bionic (from
the runtime APEX) is mounted.

Using unshare and setns, init first starts with the mount namespace for
the pre-apexd and then switches to the other mount namespace when APEXes
are ready. It then occasionally switches to pre-apexd mount namespace
when it has to re-launch a pre-apexd process (e.g. the process has
crashed, etc.)

In doing so, read access to /proc/self/ns/mnt is granted to init as
well.

Bug: 120266448
Bug: 122717176
Test: m device boots
Change-Id: Idbf15cbf5cc36b9993d718d4d887cd8f23a94666
2019-01-31 13:44:21 +09:00
Jiyong Park
4b3f2c6245 Label the bootstrap linker and bionic mount points
Bootstap linker has been moved from /system/bin/linker[64] to
/system/bin/bootstrap/linker[64]. Reflect the change in file_contexts.
Existing paths are not removed since the bootstrap linker (or the
linker from the rumtime APEX) will be bind-mounted to the old path by
init.

Also label the files under /bionic which serve as mount points for
either of the bootstrap bionic or the bionic from the runtime APEX.

In addition, read access for the symlinks in /system/lib/*.so and
/system/bin/linker is granted. This is because Bionic files in the paths
are now symlinks to the corresponding mountpoints at /bionic.

Bug: 120266448
Test: device boots to the UI

Change-Id: Iea4d76eb46754b435b6c5428481cd177da8d2ee1
2019-01-31 13:44:21 +09:00
Felka Chang
61ceae5c08 Merge "add create link permission for platform_app"
am: 48234250f5

Change-Id: If5d6f6b88d0c55bf6c3f704e69d9260792ff4bf0
2019-01-30 19:06:03 -08:00
Felka Chang
48234250f5 Merge "add create link permission for platform_app" 2019-01-31 02:38:09 +00:00
Hung-ying Tyan
4633c2fdc0 Sepolicy for dynamic_android_service
am: e4350c1a64

Change-Id: Ie2590b9926d96a004573f1615ea069a28d75bae5
2019-01-30 18:09:35 -08:00
Hung-ying Tyan
e4350c1a64 Sepolicy for dynamic_android_service
Dynamic_android service is a proxy running in SystemServer to the
gsi_service daemon. It provides a set of SystemApi's to manage
installation of a new system image to the device while keeping the
original system image intact.

Bug: 122929007
Test: manual; see dynamic_android service start in logcat
Change-Id: Idb9b0475677dad13b7864ca0cf6041dcab04b4e3
2019-01-31 01:30:36 +00:00
Yabin Cui
a3248b809c Merge "Fix running simpleperf_app_runner on user device."
am: 59e8da9196

Change-Id: Iab88f8f0754b72a6c626608e797342b91c400548
2019-01-30 15:07:36 -08:00
Treehugger Robot
59e8da9196 Merge "Fix running simpleperf_app_runner on user device." 2019-01-30 22:59:43 +00:00
Jeff Vander Stoep
3b9fad192a Remove unused *_tmpfs types
Apps now all share the appdomain_tmpfs type.

Bug: 122854450
Test: boot Blueline with memfd enabled.
Change-Id: I5eac0adc7ecd10d19aa1bdf5f72efc7ed2a3a548
2019-01-30 21:54:40 +00:00
Nick Kralevich
337f56467b Allow permissions needed for gdb debugging
system/sepolicy commit ffa2b61330
introduced the runas_app SELinux domain, which changed how we perform
debugging of Android applications. This broke Android Studio's lldb.

From bugreport:

Debugging an app containing native code using ndk-gdb or Android
Studio's lldb currently fails. There is an selinux error in logcat
about a sigchld denial. Studio can still debug Java-only apps.

In Android Studio, starting the debugger on an app with native
code produces this selinux denial:

01-30 06:58:02.089 13449 13449 W lldb-server: type=1400 audit(0.0:831): avc: denied { sigchld } for scontext=u:r:untrusted_app_27:s0:c167,c256,c512,c768 tcontext=u:r:runas_app:s0:c167,c256,c512,c768 tclass=process permissive=0 app=com.android.ndktestapp

With "set enforce 0", I also see a sigstop denial:

01-30 07:31:12.209 15672 15672 I lldb-server: type=1400 audit(0.0:1290): avc: denied { sigstop } for scontext=u:r:runas_app:s0:c167,c256,c512,c768 tcontext=u:r:untrusted_app_27:s0:c167,c256,c512,c768 tclass=process permissive=1 app=com.android.ndktestapp

In gdb-server.log, Studio reports this error while trying to start lldb-server:

1548831482.091491938 GDBRemoteCommunicationServerLLGS::Handle_vAttach attempting to attach to pid 13379
1548831482.091519117 GDBRemoteCommunicationServerLLGS::AttachToProcess pid 13379
1548831482.092242956 GDBRemoteCommunicationServerLLGS::Handle_vAttach failed to attach to pid 13379: Permission denied

Using ndk-gdb (e.g. on the NdkGdbSample) produces the same sort
of selinux denial:

01-30 07:11:26.742 13926 13926 W arm64-gdbserver: type=1400 audit(0.0:833): avc: denied { sigchld } for scontext=u:r:untrusted_app_27:s0:c166,c256,c512,c768 tcontext=u:r:runas_app:s0:c166,c256,c512,c768 tclass=process permissive=0 app=com.android.developer.ndkgdbsample

If I use "setenforce 0", I see more denials logged (signal and
sigstop):

01-30 07:30:23.346 15478 15478 I arm64-gdbserver: type=1400 audit(0.0:1287): avc: denied { signal } for scontext=u:r:runas_app:s0:c166,c256,c512,c768 tcontext=u:r:untrusted_app_27:s0:c166,c256,c512,c768 tclass=process permissive=1 app=com.android.developer.ndkgdbsample

01-30 07:30:23.349 15478 15478 I arm64-gdbserver: type=1400 audit(0.0:1288): avc: denied { sigstop } for scontext=u:r:runas_app:s0:c166,c256,c512,c768 tcontext=u:r:untrusted_app_27:s0:c166,c256,c512,c768 tclass=process permissive=1 app=com.android.developer.ndkgdbsample

ndk-gdb times out and prints an error:

rprichard@cashew:/x/ndk/ndk/samples/NdkGdbSample$ /x/android-ndk-r19/ndk-gdb --launch
Redirecting gdbserver output to /tmp/gdbclient.log
...
Error: unable to connect to device.
Remote communication error.  Target disconnected.: Connection reset by peer.

gdbclient.log shows that gdbserver hasn't started listening to its Unix socket yet:

rprichard@cashew:/x/ndk/ndk/samples/NdkGdbSample$ cat /tmp/gdbclient.log
Attached; pid = 14232

Normal output looks like this:

rprichard@cashew:/x/ndk/ndk/samples/NdkGdbSample$ cat /tmp/gdbclient.log
Attached; pid = 27799
Listening on Unix domain socket '/data/data/com.android.developer.ndkgdbsample/debug_socket'
Remote debugging from host 127.0.0.0

Test: compiles and builds
Bug: 123612207
Change-Id: Ia9a711cc54cc044c0817a7c17eb4506015adb393
2019-01-30 13:19:36 -08:00
Jeff Vander Stoep
5314cb2a93 Initial selinux policy support for memfd
am: 9f5d0d90a3

Change-Id: Idcdd62cdb6bb0119c7ab85da9e7dfaebe3f1078e
2019-01-30 11:33:43 -08:00
Jeff Vander Stoep
9f5d0d90a3 Initial selinux policy support for memfd
Move all app tmpfs types to appdomain_tmpfs. These are still protected
by mls categories and DAC. TODO clean up other app tmpfs types in a
separate change.

Treble-ize tmpfs passing between graphics composer HAL and
surfaceflinger.

Bug: 122854450
Test: boot Blueline with memfd enabled.
Change-Id: Ib98aaba062f10972af6ae80fb85b7a0f60a32eee
2019-01-30 19:11:49 +00:00
Yabin Cui
84c70929be Fix running simpleperf_app_runner on user device.
Bug: 118835348
Test: build and boot blueline user device.
Test: test simpleperf_app_runner manually.
Change-Id: I022d7f10f6164e6980f55badd4edcdc76a73c004
2019-01-30 11:09:43 -08:00
Jiyong Park
3d6aa86282 Merge "Label APEX files correctly when TARGET_FLATTEN_APEX=true"
am: 37ab42e542

Change-Id: Icd84b42cdcdf0d186d83d1e3b9a633474fcb2c57
2019-01-30 07:14:40 -08:00
Treehugger Robot
37ab42e542 Merge "Label APEX files correctly when TARGET_FLATTEN_APEX=true" 2019-01-30 15:06:21 +00:00
felkachang
0c402012e6 add create link permission for platform_app
To create symbolic link by unstrusted app raise the security
issue. To allow platform_app to create symbolic link prevent
the functionality from not working.

Fixes: 123555031
Test: atest DocumentsUITests
Bug: 123350324

Change-Id: Idb23c3e813c66bd284d42b8040deeea762f99a0f
2019-01-30 16:03:27 +08:00
Shuzhen Wang
410a5f08d3 Allow cameraserver to access tmpfs
am: 248633385e

Change-Id: I988a34b8c28fb44ddf723cf74ef6beb4a2487350
2019-01-29 21:46:16 -08:00
Shuzhen Wang
e588655bb9 Revert "Cameraserver: Allow cameraserver to access /data/misc/cameraserver"
am: 6b4caaa3e8

Change-Id: I5544b92d58ba992dd24c354d4c801f6891204b35
2019-01-29 21:45:53 -08:00
Shuzhen Wang
248633385e Allow cameraserver to access tmpfs
Bug: 79465976
Test: testHeic CTS test
Change-Id: I51eb485dc29d869c5d35fc317b0e008d04bdcbad
2019-01-30 05:31:42 +00:00
Shuzhen Wang
6b4caaa3e8 Revert "Cameraserver: Allow cameraserver to access /data/misc/cameraserver"
This reverts commit 4e1497c7c0.

Reason for revert: Write temporary file to in-memory tmpfs instead

Test: testHeic CTS test
Bug: 123526741
Change-Id: Ifa7f5a0b50c46ee3e1a5695595233b17adc99222
2019-01-29 23:29:05 +00:00
Mathieu Chartier
a35beeb6f3 Merge "Rename runtime -> runtime_native property namespace"
am: 91b0ef13d8

Change-Id: Idfa6c810d540332c44ba997ec2a061efabdb6903
2019-01-29 14:48:03 -08:00
Isabelle Taylor
edcf56ec71 Merge "Fix perfetto CTS test"
am: 13fdfa44cd

Change-Id: I987f6089184ff64b8e7766355349ea2b77614e82
2019-01-29 14:47:37 -08:00
Mathieu Chartier
91b0ef13d8 Merge "Rename runtime -> runtime_native property namespace" 2019-01-29 22:44:36 +00:00
Treehugger Robot
13fdfa44cd Merge "Fix perfetto CTS test" 2019-01-29 22:31:31 +00:00
Roland Levillain
9ae5d888eb Introduce a postinstall_apex_mnt_dir label for /postinstall/apex.
am: a42ebf4128

Change-Id: I52a7240c6d852b20bde14a269ebccec46e53b5ea
2019-01-29 10:21:02 -08:00
Mathieu Chartier
669cef88a3 Rename runtime -> runtime_native property namespace
The convention for native properties is to use _native suffix.

Bug: 123524494
Bug: 120794191
Test: set a property and ensure it can be read in AndroidRuntime.cpp

Change-Id: I69feab9be78f24d812b8f953d3ec06a5d8d18f15
2019-01-29 10:20:36 -08:00
Roland Levillain
a42ebf4128 Introduce a postinstall_apex_mnt_dir label for /postinstall/apex.
Directory `/postinstall/apex` is used as a mount point for a tmpfs
filesystem during A/B OTA updates. APEX packages from the new system
partition are mounted ("activated") in subdirectories of
`/postinstall/apex`, so that they are available when `otapreopt` is
running.

Directory `/postinstall/apex` used to be of type `tmpfs` for SELinux
purposes. The new `postinstall_apex_mnt_dir` label is more
restrictive, and tightens permissions granted to `otapreopt_chroot`,
`otapreopt` (running as `postinstall_dexopt`), and `dex2oat`,
regarding the apexd logic recently added to `otapreopt_chroot`.

Test: A/B OTA update test (asit/dexoptota/self_full).
Bug: 113373927
Bug: 120796514
Change-Id: I03f0b0433d9c066a0c607f864d60ca62fc68c990
2019-01-29 10:09:50 +00:00
Mathieu Chartier
01a1ca2d55 Merge "Add runtime property permissions for experiments"
am: 2c92514304

Change-Id: I024ecbbbc7da3d0089ba2427b70daaf044b3e084
2019-01-28 21:34:29 -08:00
Remi NGUYEN VAN
27902606e3 Merge "Add NetworkStack policies for netd and netlink"
am: a579a99d31

Change-Id: Id9ea589714f9757c7d5d61ca2efa867006569077
2019-01-28 21:28:53 -08:00
Carmen Jackson
e5a0ba256d Merge "Ensure that memory and binder_driver tracepoints are available in user builds"
am: df44eca185

Change-Id: I5864081c22d734d8d751f44f8307e9c0bf84aae7
2019-01-28 20:57:01 -08:00
Alan Stokes
b13066993b Merge "Audit native code loading on user builds."
am: c5f6cd22fd

Change-Id: Ie0f757ac468def8405ce3bc6fc72d40f8e83f399
2019-01-28 20:56:35 -08:00
Jiyong Park
e7fab1859f Label APEX files correctly when TARGET_FLATTEN_APEX=true
When TARGET_FLATTEN_APEX=true, APEX files are not packaged in *.apex
files but flattened to the system partition under /system/apex/<name>
directories. There was a bug that those flattened files are not labeled
because the per-APEX file_contexts were applied only when building
*.apex. Fixing this by converting the file_contexts files so that
/system/apex/<name> path is prepended and applying the generated
file_contexts file for system.img when TARGET_FLATTEN_APEX=true.

Bug: 123314817
Test: TARGET_FLATTEN_APEX=true m
ls -alZ /system/apex/*/* shows that the files are correctly labeled

Change-Id: Ia82740a1da0083d5bcfd71354a6d374d2a918342
2019-01-29 10:07:54 +09:00
Mathieu Chartier
2c92514304 Merge "Add runtime property permissions for experiments" 2019-01-29 00:43:43 +00:00
Remi NGUYEN VAN
a579a99d31 Merge "Add NetworkStack policies for netd and netlink" 2019-01-28 23:13:08 +00:00
Treehugger Robot
df44eca185 Merge "Ensure that memory and binder_driver tracepoints are available in user builds" 2019-01-28 22:04:58 +00:00
Mathieu Chartier
05ad04dd91 Add runtime property permissions for experiments
Bug: 120794191
Bug: 123524494
Test: set a property and ensure it can be read in AndroidRuntime.cpp

Change-Id: Ib37102f35e9987d3d9baff83c45571a5d632ad50
2019-01-28 12:39:23 -08:00
Treehugger Robot
c5f6cd22fd Merge "Audit native code loading on user builds." 2019-01-28 17:52:32 +00:00
Shuzhen Wang
33898587ef Cameraserver: Allow cameraserver to access /data/misc/cameraserver
am: 4e1497c7c0

Change-Id: I9da56e7216e5b303bccf561814ef0ce409561bbc
2019-01-28 08:20:44 -08:00
Shuzhen Wang
b1a7f25f58 Cameraserver: Allow camera server to talk to MediaCodec
am: 8db7e4a7fa

Change-Id: Icdd5c65ee33472cf54790afdc57db336d0e342fd
2019-01-28 08:20:31 -08:00
Shuzhen Wang
4e1497c7c0 Cameraserver: Allow cameraserver to access /data/misc/cameraserver
Test: Cameraserver writes/reads/overwrites files in the folder
Bug: 79465976
Change-Id: I76460844a8e02e4c6ce704b85c72e57f861f5b18
2019-01-28 07:32:00 -08:00