Commit Graph

87 Commits

Author SHA1 Message Date
Christopher Tate
681e015061 am 0505ebbc: am 8869d6f3: Merge "Extend preferred-app preload support for complex resolutions" into klp-dev
* commit '0505ebbcbe539820d434b924a76e8b9932f8862e':
  Extend preferred-app preload support for complex resolutions
2013-11-05 13:56:38 -08:00
Christopher Tate
2298ef2f7f Extend preferred-app preload support for complex resolutions
Support factory defaults that involve specific type+scheme matching.

Bug 11372979

Change-Id: I0d68937797d6b4bc996a8707a7cd21491a3aae3b
2013-11-04 17:02:10 -08:00
Erin Dahlgren
b970589321 am 204b1e28: am fe470c37: Merge "Have the package manager write mimetype of preferred activities to xml." into klp-dev
* commit '204b1e2817f3abb7946d9254cca666d2da1e4f7c':
  Have the package manager write mimetype of preferred activities to xml.
2013-10-24 16:25:59 -07:00
Erin Dahlgren
707a59dc9a Have the package manager write mimetype of preferred activities to xml.
Issue: 11372979
Change-Id: I5ea4e94c978845426e2650946d0bba076d161c19
2013-10-24 15:13:39 -07:00
Christopher Tate
037fa2489f am d34e1155: am 5f474fcb: Merge "Edge case: overriden system package moved & became privileged in OTA" into klp-dev
* commit 'd34e1155226e8885d51c05209c7c87503528a2db':
  Edge case: overriden system package moved & became privileged in OTA
2013-10-22 16:45:51 -07:00
Christopher Tate
9f08820025 Edge case: overriden system package moved & became privileged in OTA
Because properly continuing permission grants post-OTA has changed
policy to include privilege considerations based on install location,
make sure that we re-evaluate when we determine that the apk has
moved from its pre-OTA location.

Bug 11271490

Change-Id: I6c09986e2851a67504268b289932588457c05dfc
2013-10-22 15:36:01 -07:00
Christopher Tate
fd6f5ca64a am 595c48e4: am d570dae5: Merge "Fix priv-app edge case across OTAs" into klp-dev
* commit '595c48e43d8f40baaa8e281959300e582d765f56':
  Fix priv-app edge case across OTAs
2013-10-21 11:36:32 -07:00
Christopher Tate
628946a6ef Fix priv-app edge case across OTAs
In this case:

   1. Privileged system app FOO is overlain by an installed update,
   2. FOO was replaced during an OTA,
   3. The new in-system FOO introduced new privileged permission requests
      that had not been requested by the original FOO,
   4. the update version of FOO still had a higher version code than
      the new FOO on the system disk, and
   5. the update version of FOO had been requesting these same (newly-
      added-to-system-apk) permissions all along;

then the newly-added privileged permission requests were incorrectly being
refused.  FOO should be able to use any privileged permission used by the
APK sited on the system disk; but instead, it was only being granted the
permissions used by the *original* version of FOO, even though the system
FOO now attempted to use them.

Still with me?

The fix is to (a) properly track privileged-install state when processing
known-to-be-hidden system packages, and (b) to tie the semantics of the
permission grant more explicitly to that evaluated state, rather than
using the prior (rather fragile) fixed-up privilege calculation applied
to the overlain apk's parse records.

Bug 11271490

Change-Id: Id8a45d667e52f3b5d18109e3620d5865f85bb9c9
2013-10-18 18:11:05 -07:00
Dianne Hackborn
9aded5abd6 am 827c5af0: am e49a107a: Merge "Fix issue #11223335: APR: Lots of failures in procstats due to..." into klp-dev
* commit '827c5af02de29424ea80f1ccfe525e681d0b74f0':
  Fix issue #11223335: APR: Lots of failures in procstats due to...
2013-10-14 19:01:55 -07:00
Dianne Hackborn
878deb3c7b Fix issue #11223335: APR: Lots of failures in procstats due to...
...bad cleanup of crashing processes

We now have a special path for crashing processes, to silently
clean up their state.

Also some tweaks to Log/Slog.wtf to get better stack crawl
summaries in APR.

Change-Id: Ieced26989907a6e7615b6fa033813fced78d7474
2013-10-14 17:15:40 -07:00
Nick Kralevich
ac219aa5a3 am 662b3bbe: am effefbc4: Merge "Proper security labeling of multi-user data directories."
* commit '662b3bbe08c03de77c0676b4fdc1587723863f1b':
  Proper security labeling of multi-user data directories.
2013-09-20 12:51:47 -07:00
Robert Craig
8643dc6b70 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.

Change-Id: Iaba7c40645bc7b6cc823d613da0c3782acf6ddd5
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
2013-09-18 13:21:24 +00:00
Christopher Tate
06dc8484b4 Fix handling of privileged permissions on update
When a bundled app is upgraded, only reprocess ungranted 'system'
permissions if the bundled apk is privileged.

Also adds the 'privileged' flag to the dumpsys flag summary.

Bug 10503183

Change-Id: Ic6560fc904e5970fc871a155c898744a6607f851
2013-09-15 17:51:04 -07:00
Christopher Tate
86b391cd03 Prune shared users that the system declares but does not use
Bug 10184643

Change-Id: I72c5177c621c24fac34bf8744eb6c5108b6d3464
2013-09-13 16:58:36 -07:00
Jeff Sharkey
cc8f710a50 Include system packages in packages.list.
This provides group membership to the FUSE daemon, since system
packages like NFC and Bluetooth hold sdcard_rw.

Bug: 10610659
Change-Id: I7428e999cfa4087ffe220b9d8bd80827191ab997
2013-09-10 16:57:24 -07:00
Jeff Sharkey
5dea7d554a Skip packages with missing metadata.
Otherwise this would result in NPE, and packages.list would never
be updated.

Bug: 10577538
Change-Id: I35a4407dbc283ab20a4c45a2ea1a14b04044c98c
2013-09-03 12:01:20 -07:00
Amith Yamasani
e9ecc8b499 Improve Intent disambig dialog behavior
Keep track of last chosen activity for a particular intent, similar
to how it is tracked for "Always" choices.
Pre-select the last chosen activity if previously the user picked
"Just once".
Downgrade "Always" to "Last chosen" if there's a new kid on the block,
instead of removing it entirely.
Add methods to set and get last chosen entry.

UI - switch from Grid to List.

Bug: 9958096

Change-Id: Ied57147739a3ade1d36c3a7ec1e8ce77e5c5bb16
2013-08-27 18:05:00 -07:00
Jeff Sharkey
02e4d16ed9 Add GIDs to packages.list, update SD card perms.
Write supplementary GIDs to packages.list for lower-level system
components to parse.

WRITE_EXTERNAL_STORAGE also implies sdcard_r GID. Switch to always
enforce READ_EXTERNAL_STORAGE permission. Update permission docs to
mention new behavior.

Change-Id: I316ba4b21beebb387ac05c80980ae9b38235b37d
2013-08-12 20:31:36 -07:00
Jeff Sharkey
184a0100ab Allow packages.list access with new GID.
The FUSE daemon is using packages.list to map from package name to
appId after it drops permissions, so create a new "package_info" GID
to grant read access.

Also switches FileUtils to use Libcore.os.

Change-Id: I9451ca4e90e8a985526805c6df0888a244a1db36
2013-08-08 17:38:13 -07:00
Ben Gruver
dd72c9ed55 Improve the logic for determining whether the caller is a system app
Bug: 10024554
Change-Id: I742e918840a98dd83d713bdf7a43a919674e65fe
2013-08-07 13:59:17 -07:00
Dianne Hackborn
b09491f271 Add new facility for apps to declared their preferred intents.
This is an extension from the existing data/etc/perferred-apps
facility.  Now applications pre-installed on the system image
can declare which intents they would like to be considered the
preferred app for.  When the system firsts initializes, or the
application settings are reset, these are used to configured
the current preferred app settings appropriately.

You use this with a new <preferred> tag under your activity,
which indicates which intents you would like to be the preferred
handler for.  The syntax for this is written much like an
intent filter, however semantically it is not really an intent
filter and so has some important differences:

- You can not use globbing patterns (for SSPs or paths).
- You can use only one action (if you use more than one it
  will only use the first one, so be careful).

Semantically what this is actually used for is a template
from which to generate a set of Intent objects, which are used
to probe the current environment in order to see if there are
multiple activities that can handle the Intent and, if so,
generate a new preferred setting for that pointing to your app.

As an example, here is how the preferred tag might be written
for the Maps application:

            <preferred>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="http" />
                <data android:scheme="https" />
                <data android:host="maps.google.com" />
                <data android:path="/" />
                <data android:pathPrefix="/maps" />
            </preferred>
            <preferred>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="geo" />
            </preferred>

From this, we generate the following set of potential Intents
to be matched, all with ACTION_VIEW, CATEGORY_DEFAULT+CATEGORY_BROWSABLE:

Change-Id: I7fd42aec8b6109c7dd20012529662362f1b7437a
http://maps.google.com/
http://maps.google.com/maps
https://maps.google.com/
https://maps.google.com/maps
geo:
2013-07-22 15:30:11 -07:00
Amith Yamasani
655d0e2029 Single-user restrictions
Introduces a new "blocked" state for each package. This is used to temporarily
disable an app via Settings->Restrictions.

PIN creation and challenge activities for use by Settings and other apps. PIN
is stored by the User Manager and it manages the interval for retry attempts
across reboots.

Change-Id: I4915329d1f72399bbcaf93a9ca9c0d2e69d098dd
2013-06-25 16:03:55 -07:00
Geremy Condra
e201f581f6 Merge "Stop spewing errors into the logs." 2013-06-18 18:02:14 +00:00
Geremy Condra
bf7b1f4744 Stop spewing errors into the logs.
These are for debugging. Marking them that way.

Bug: 9479475
Change-Id: Ia0c27829583ecbab58a60a8c8350e9c099b812c2
2013-06-18 10:52:45 -07:00
Dianne Hackborn
df1c0bf774 Add scheme specific part to IntentFilter.
Change-Id: I063d086cdc742800b8e31ddf2942f2e9230e2785
2013-06-12 18:08:17 -07:00
Dianne Hackborn
cbfd23ee6f Add new API to retrieve a dumpsys of a single package.
Adds a platform API, and pm command.  Fixes some issues with
dumping per-package data in package manager, makes battery
stats able to dump per-package state.

Change-Id: I76ee6d059f0ba17f7a7061886792b1b716d46d2d
2013-06-11 14:26:53 -07:00
Dianne Hackborn
a05a368613 am 69fe4069: am 006c6338: Merge "Fix bug in initializing preferred activities." into jb-mr2-dev
* commit '69fe40692973bf480019d71dea85d01d24eb7a68':
  Fix bug in initializing preferred activities.
2013-04-02 12:11:54 -07:00
Dianne Hackborn
4d491a605e Fix bug in initializing preferred activities.
Now that we are smarter about the initialization, we need
to do this after all packages are scanned.

Change-Id: I598f5ef84dcc83779bbff29e4c92136c63fb32de
2013-04-01 18:10:51 -07:00
Geremy Condra
3868a19759 am a54e0643: am 9d034deb: am 24948d3c: am 946a5c91: Merge "Save off the seinfo value with packages.list."
* commit 'a54e064365706d40c55c2984cca1f15a6bf3e8fb':
  Save off the seinfo value with packages.list.
2013-03-28 16:58:51 -07:00
Geremy Condra
9d034debdd am 24948d3c: am 946a5c91: Merge "Save off the seinfo value with packages.list."
* commit '24948d3ca7ff7fa70ee85e9aa7530239d7b482b2':
  Save off the seinfo value with packages.list.
2013-03-28 16:55:03 -07:00
Dianne Hackborn
d734b4f285 am 6b8e7b35: am bf20aa76: Merge "Keep track of who has disabled applications." into jb-mr2-dev
* commit '6b8e7b35ef763d29a30c87a5a95ef941d39a8ee9':
  Keep track of who has disabled applications.
2013-03-27 16:40:49 -07:00
Dianne Hackborn
3fa3c28a35 Keep track of who has disabled applications.
Change-Id: I2640d3dc2200b589e2beb42a43cc93efd090f06e
2013-03-27 12:01:52 -07:00
Robert Craig
4a4537331b 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>
2013-03-26 08:45:28 -04:00
rpcraig
1e0c8e6989 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.

Change-Id: Iacaba6d9d18d5337e65713960d14efe32006b330
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
2013-03-25 14:35:00 +00:00
Dianne Hackborn
dc37c5f2e3 am 0c42b580: am 53149acf: Merge "Implement limited shared libraries in apks." into jb-mr2-dev
* commit '0c42b58041dc0ede9865335fa48637fb6b677cd3':
  Implement limited shared libraries in apks.
2013-03-12 23:10:38 +00:00
Dianne Hackborn
c895be7bc6 Implement limited shared libraries in apks.
You can now declare shared libraries in apks that are
on the system image.  This is like the existing mechanism
of using raw jar files as shared libraries, but since they
are contained in an apk the library can actually be updated
from the Play Store.  And this even (mostly) works.

There are some deliberate limitations on this feature.  A
new shared library *must* be declared by an apk on the system
image.  Installing an update to a system image apk does not
allow you to add new shared libraries; they must be defined
by everything on the base system image.  This allows us to
get rid of a lot of ugly edge cases (shared libraries that were
there disappearing after an update is uninstalled for example)
and give some brakes on apps that happen to be pre-installed
on devices from being able to throw in new shared libraries
after the fact.

In working on this, I ran into a recently introduced bug where
uninstalling updated to system apps would fail.  This was done
to allow for the new restricted users that don't have all
system apps, but conflicts with the existing semantics for
uninstalling system apps.  To fix this I added a new uninstall
flag that lets you switch on the new mode if desired.

Also to implement the desired logic for limitations on declaring
new shared libraries in app updates, I needed to slightly tweak
the initial boot to keep the Package object for hidden system
packages associated with their PackageSetting, so we can look at
it to determine which shared libraries are allowed.  I think
this is probably more right than it was before -- we already
need to parse the package anyway, so we have it, and when you
install an update to a system app we are in this same state
until you reboot anyway.

And having this fixed also allowed me to fix another bug where
we wouldn't grant a new permission to an updated app if its
system image version is updated to request the permission but
its version is still older than whatever is currently installed
as an update.  So that's good.

Also add new sample code showing the implementation of an apk
shared library and a client app using it.

Change-Id: I8ccca8f3c3bffd036c5968e22bd7f8a73e69be22
2013-03-12 12:51:38 -07:00
Geremy Condra
12c1838198 Add check for UID reuse.
The goal here is to make sure that we aren't allocating a UID that
could have been in use since the last time the device booted.

Bug: 8256571

(cherry picked from commit af70d15543c89a53f064492f4e3d17c446e00039)

Change-Id: I8b11811df8d5a8ad1aa064abb43db020aceb29e3
2013-03-08 17:34:04 -08:00
Geremy Condra
f1bcca8215 Added the KeySetManager.
Bug: 7554291
Change-Id: Ic693a544f1e2cab20f6540b3fc4ff673e35bd2c6
2013-02-20 20:06:29 -08:00
Dianne Hackborn
8a2ed1d7c0 Improve configuration of default preferred apps.
The file that defines default preferred apps is now more
robust.  It is no longer a raw dump of the package
manager settings, but instead a more general list of a
target activity and filter.  When reading it, the remaining
information (match value, set of potential matches) is
determined dynamically.

Change-Id: I0edc6e0d2ed3dd2a6e2238992f18f7fc1f51d8d4
2013-01-29 15:18:29 -08:00
Dianne Hackborn
fd7adedebf Add new disabled state for "optional" built-in apps.
The disabled state allows you to make an app disabled
except for whatever parts of the system still want to
provide access to them and automatically enable them
if the user want to use it.

Currently the input method manager service is the only
part of the system that supports this, so you can put
an IME in this state and it will generally look disabled
but still be available in the IME list and once selected
switched to the enabled state.

Change-Id: I77f01c70610d82ce9070d4aabbadec8ae2cff2a3
2013-01-22 17:10:23 -08:00
Nick Kralevich
1506921e8e Revert "App home directories are now 0700 for targetSdkVersion > 17"
This reverts commit 92091fa963.

Bug: 7966399
Bug: 7208882
2013-01-09 15:54:56 -08:00
Nick Kralevich
92091fa963 App home directories are now 0700 for targetSdkVersion > 17
Pass targetSdkVersion to installd so it knows the appropriate
permissions to apply to the app's home directory.

Bug: 7208882
Change-Id: Ia62ed36b32ee5af01077fb10a586024411be8ed4
2012-12-14 11:53:10 -08:00
Dianne Hackborn
13579ed330 Cleaner initial boot.
This does some cleanup of the initial boot, especially when
booting in "no core apps" mode for encryption/decryption.

Change-Id: Ifb3949f580e52f54559e603c4b0b104f6bac2f6c
2012-11-28 18:09:01 -08:00
Amith Yamasani
f031f230f5 Fix for some downloaded apps showing up on all users
Bug: 7226656

In the case of packages with sharedUserId, the packages were inserted
into mPackages a little later. We were reading the package restrictions
before this happened and so the apps were being removed from the restricted
list, effectively setting installed=true.

Moved the block that reads the restrictions to after the processing of
mPendingPackages.

Also, don't setInstalled for all users in the pending packages processing.

Change-Id: I382787e45fecdb871d80ffb4d854782d8e32e4a7
2012-10-26 17:10:51 -07:00
Dianne Hackborn
6309271f7b Fix issue #7295951: Mako asks which Launcher to use at every re-boot
A couple problems:

- We need to clear app preferences later, now that we have encrypted apps.
- The multi-user implementation of this would allow different preferred
  apps from different users to potentially interefere with each other.
  They are not completely separate data structures.

Change-Id: Id4f1ebb6414fdf30ff1049adaa1efe83dabac01a
2012-10-07 14:45:35 -07:00
Dianne Hackborn
d4ac8d7b3d Fix issue #7211769 and #7244492, thrash around on #7226656.
Issue #7211769: Crash dialog from background user has non-working "report"

The report button now launches the issue reporter for the correct user.
Also for crashes on background users, either disable the report button,
or simply don't show the dialog depending on the build config.

Issue #7244492: Bugreport button in Quick Settings doesn't actually do anything

Now they do.

Issue #7226656: second user seeing primary user's apps

I haven't had any success at reproducing this.  I have tried to tighten up
the path where we create the user to ensure nothing could cause the
user's applications to be accessed before the user it fully created and thus
make them installed...  but I can't convince myself that is the actual problem.

Also tightened up the user switch code to use forground broadcasts for all
of the updates about the switch (since this is really a foreground operation),
added a facility to have BOOT_COMPELTED broadcasts not get launched for
secondary users and use that on a few key system receivers, fixed some debug
output.

Change-Id: Iadf8f8e4878a86def2e495e9d0dc40c4fb347021
2012-09-28 15:37:22 -07:00
Jeff Sharkey
752cd922f7 Always bind to DefaultContainerService as OWNER.
When PackageManagerService deals with external storage, always bind
to DefaultContainerService as USER_OWNER.  This avoids binding to a
stopped user, which would fail.

Bug: 7203111
Change-Id: I8e303c7558e8b5cbe4fea0acc9a472b598df0caa
2012-09-23 16:44:34 -07:00
Amith Yamasani
920ace0bbc Query users excluding any being removed
Keep track of user creation and last logged-in time.
adb shell dumpsys users
User switcher shouldn't show users about to be removed.
No need to check for singleton for activities.

Bug: 7194894
Change-Id: Ic9a59ea5bd544920479e191d1a1e8a77f8b6ddcf
2012-09-20 22:33:43 -07:00
Kenny Root
5455f6826f Update PackageSetting flags when updating
Commit 5e03e2ca7d moved from
PacakgeParser.Package to PackageSetting which revealed that we weren't
updating the pkgFlags when replacing an existing application.

Add flags to PackageSetting so that deletion of the package later succeeds.

Change-Id: I2e0d4e07da31f48b68601f3f3240966b6e17dbdf
2012-09-09 15:12:00 -07:00
Dianne Hackborn
11941fd651 Fix crash when setting wallpaper from non-primary user.
When accessing a content provider, there is a check for whether
the provider can run in the caller's process; if so, even if the
provider is currently published, we return to the caller that it
can run locally.

This check was broken -- it had an old condition that allowed
content providers owned by the system UID to run in any other UID's
process.  This is wrong, since by definition the other
UIDs would not be able to access the data under the original UID.

We ran into this because the activity picker is part of the
android platform manifest, so runs as the system process.  However
it needs to run as the user who invoked it, so when coming from the
non-primary user we spin up a "system" process running as a uid of
that user.  Now when that process tries to access the settings
provider, the broken check would think that a new instance of the
settings provider should be created in the caller's process.

Change-Id: I7bf495ed8370cb271bdaec073d5b7dda9e38c546
2012-09-07 15:50:26 -07:00