Apply MMAC changes from master.

Change-Id: I01f2a9084dfe7886087b1497070b0d7f2ad8477e
Implement Device Admin API for MMAC

Conflicts:
	api/current.txt
	core/java/android/app/admin/DevicePolicyManager.java

Change-Id: I1df507ced67fbcab8fdcde9cce78705b5e54e346
Proper security labeling of multi-user data directories.

This patch covers 2 cases. When an app is installed
and the resulting data directory is created for all
existing users. And when a new user is created and
all existing app data directories are created for
the new user.

Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>

Change-Id: I01f2a9084dfe7886087b1497070b0d7f2ad8478e

Conflicts:
	cmds/installd/commands.c
Update location of policy files

The location of policy files has changed from
/data/system to /data/security.

Also, a name change to mmac enforcing property
name to place it under persist.mmac. namesepace.

Adds api's for getting and setting the MMAC
enforcing mode.

Change-Id: I0e9468fe651cd6ec018d5c85d35d693e55479e89
Change DPMS code to accommodate enforce states on boot.

We need to respect if setenforce (selinux enforce), setsebool (booleans),
or setprop (mmac enforce) are set in the any of the init.rc files.
This set of changes will allow the init.rc values to win over any
potential device admin wishes.

Change-Id: I01f2a9084dfe7886087b1497070b0d7f2ad8473e
Signed-off-by: Robert Craig <rpcraig@tycho.ncsc.mil>
Move seinfo and install-time changes to inside PMS.

Per request by Google, move the install-time checks entirely
inside PMS.

Change-Id: I01f2a9084dfe7886087b1497070b0d7f2ad8479e
Bring install-time code inline with AOSP.

Recent submissions to AOSP rework some of the
internal logic of SELinuxMMAC and the PMS.
Bring our maintained version inline with
those changes while still allowing policy
to dictate all seinfo values regardless
of location.

Change-Id: I11ff4c4089217e6a9d95ca2841c5bc29bfd763ad
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
Save off the seinfo value with packages.list.

Patch adds the seinfo label per package to the file.
This is of particular interest to the run-as program
which uses the seinfo tag to correctly label the
app security context before running the shell.

Change-Id: I9d7ea47c920b1bc09a19008345ed7fd0aa426e87
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
Follow AOSP behavior for seinfo assignment.

No distinctions can be made among third party apps.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>

Change-Id: Ic894086485bfea884c0e21af13f98a2d54346b15
Add data validation on seinfo labels.

Ensure that policy contains a clean seinfo
string. Where clean means no whitespace characters.

Change-Id: I814411cbc8d16eaed99a1389f5487529e36e617b
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
Replace SEAndroid with SELinux.

Change-Id: Ibbe544a9f025d71ad416bc01cee2145b62d7b2d4
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
Drop "SE Android" from strings.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
Change-Id: I814411cbc8d16eaed99a1389f5487529e36e627b
Restore support for labeling non-system apps based on their certificate.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>

Change-Id: I814411cbc8d16eaed99a1389f5487529e36e637b
Fix SELinux.java doc errors

This fixes five errors when building the Java docs. It also
removes two obsolete lines.

Signed-off-by: Richard Haines <richard_c_haines@btinternet.com>
Change-Id: I814411cbc8d16eaed99a1389f5487529e36e647b
Allow device admin policy to override policy boolean state.

Prior code only allowed a false to true transition for a device
admin policy. This was to ensure that a default true was always
upheld. Reverse this and allow a device admin policy to take over
the setting of all booleans; even those set by the init.rc.

Change-Id: I64ae4d397a8118614c83fa611f0191e2f934dade
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>