Commit Graph

184 Commits

Author SHA1 Message Date
Kenny Root
584c4cdbf3 Move app-lib definition up for system app scanning
System apps were getting the wrong path because app-lib directory was
defined after the scanning of packages.

Bug: 7425516
Change-Id: I7a7a6b2a74f846c84516440ee950099bdc564d0b
2012-10-29 10:46:42 -07:00
Dave Burke
799916e6ac Merge "Revert "Check non-primary user dirs during package scan"" into jb-mr1-dev 2012-10-23 23:14:15 -07:00
Dave Burke
383fa18b51 Revert "Check non-primary user dirs during package scan"
This reverts commit 4525f5b69c

Change-Id: I31b7a0860972532478ab3420556b806bfa78739a
2012-10-23 23:12:19 -07:00
Kenny Root
92bc9b3196 PMS: check outInfo for null during delete
It appears that changing an application's signature during boot can pass
an outInfo of null to this function.

Bug: 7402550
Change-Id: I839fea6c8ee728a352c6b906f0fa6671c85f8694
2012-10-23 17:44:26 -07:00
Dianne Hackborn
56e75631bd Merge "Fix issue #7342364: JellyBean broke Toddler Lock, again" into jb-mr1-dev 2012-10-23 17:35:59 -07:00
Dianne Hackborn
77119bc6c9 Fix issue #7342364: JellyBean broke Toddler Lock, again
Change-Id: I400c02711edc302a1bc7fbf98b62fcb9f76e5e12
2012-10-23 15:02:25 -07:00
Kenny Root
4525f5b69c Check non-primary user dirs during package scan
During package scan, only the primary user data directories were
checked. If the secondary user didn't have an application directory, it
would happily ignore it. The app would then crash upon startup.

Bug: 7391882
Change-Id: I1fa92aa27386104d4ac6bc5dc92bfbf2e7dfac9f
2012-10-22 18:48:24 -07:00
Amith Yamasani
8074e98b20 Merge "Fix crashes when quickly adding and removing users" into jb-mr1-dev 2012-10-21 07:44:46 -07:00
Amith Yamasani
db6a14cc85 Fix crashes when quickly adding and removing users
Make USER_REMOVED an ordered broadcast and send it before the user's
state is completely removed from the system. This gives services the
opportunity to clean up their state, while still having access to the
user's directory and UserInfo object (such as serial number).

Tell SyncManager to skip over dying/partially created users.

Improve UserManager tests, waiting for users to be removed fully.

Bug: 7382252

Change-Id: I93cfb39c9efe6f15087bf83c569a2d154ef27168
2012-10-19 16:23:30 -07:00
Kenny Root
cea3743499 Try to free cache before giving up on install
Try to get installd to free up cache before giving up when there is too
little space free.

Bug: 7232123
Change-Id: Ie3c8ca8dfc190abbb9a29a7baee31f32e9de7d69
2012-10-18 17:21:59 -07:00
Kenny Root
a3e90798b7 Robustly add symlink and add for non-primary users
Amazingly, some apps still don't use the nativeLibraryPath. So add a lib
symlink for non-primary users to fix that.

Also, there was an error when the symlink existed that it would give up.
This shouldn't really happen, but in that case, just remove it and
create a new one to be safe.

Also, move the downgrade code to the appropriate place. This downgrade
case triggered the above symlink existing bug.

Bug: 7318366
Bug: 7371571
Change-Id: Ia175b36d98f00bdc2f2433b909aafd524eb34d15
2012-10-18 15:12:09 -07:00
Jeff Sharkey
38f8688bae Return ApplicationInfo with requested userId.
Return ApplicationInfo with requested userId instead of trying to
infer it from calling UID.

Bug: 7334712
Change-Id: I9ce0061e2d020b0d74c7c9cd22d89c5ff2466a6c
2012-10-11 16:10:23 -07:00
rich cannings
36070b414a Fix verfication bypassed for adb installs
ADB installs appear as UserHandle.USER_ALL, and can only be performed by
UserHandle.USER_OWNER, so use the package verifier for UserHandle.USER_OWNER.
This returns a valid userId to call PackageManagerService.getPackageUid.

Bug: 7293091
Change-Id: I7a5497cfe5fa2e7aa804345cf9f507ec26a0db21
2012-10-09 13:34: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
rich cannings
cdf932e050 Fix PackageInstaller displays with multi-user
With this fix, when all users cancel installing an app they were warned about,
then the "Installing..." screen disappears, as desired.

Bug: 7255231
Change-Id: I2475fa790a5d09abbf94411c696682502fb1e8df
2012-10-03 14:32:38 -07:00
rich cannings
3ed62adad1 Merge "Fix package verification with multi-user" into jb-mr1-dev 2012-10-02 16:25:15 -07:00
rich cannings
d55deb0a71 Fix package verification with multi-user
Fixes the porblem of PackageManagerService always sending Intents to user 0.

Bug: 7272549
Change-Id: I25995d8b2b9a24346f4813e6d8d9a84e5d5d2b6b
2012-10-02 14:53:08 -07:00
Jeff Sharkey
6e2bee75ce Migrate more System and Secure settings to Global.
Includes telephony, WindowManager, PackageManager, and debugging
settings.  Update API to point towards moved values.

Bug: 7231764, 7231252, 7231156
Change-Id: I5828747205708872f19f83a5bc821ed0a801cb79
2012-10-02 13:55:15 -07:00
Amith Yamasani
54289b8b4a Fix cache deletion for secondary users
Bug: 7249419

Change-Id: Idbc0f9994508059ebf5055aea961b87e08b3673a
2012-10-01 11:19:55 -07:00
rich cannings
a2064df6ab Disable package verification in test harness
Bug: 7233608
Change-Id: I521980728f5fb68b42a3906ff4fd25cd59dbbd7a
2012-09-30 14:52:41 -07:00
Ben Gruver
9dbbfcda81 Merge "Pass the originating uid to the package verifier" into jb-mr1-dev 2012-09-28 10:58:19 -07:00
Jeff Sharkey
625239a054 Migrate more Secure settings to Global.
Migrate networking, storage, battery, DropBox, and PackageManager
related Secure settings to Global table.

Bug: 7232014, 7231331, 7231198
Change-Id: I772c2a9586a2f708c9db95622477f235064b8f4d
2012-09-27 16:22:53 -07:00
Ben Gruver
37d83a3caf Pass the originating uid to the package verifier
Bug: 6923241
Change-Id: I85a3e0d53b469543cb0551d3a440d2663b5d0697
2012-09-27 13:02:06 -07:00
Jeff Brown
bf6f6f9de7 Update references to migrated global settings.
Fixed one setting that was migrated but not marked deprecated.

Removed a hidden setting that is no longer used by the new
power manager service.

Bug: 7231172
Change-Id: I332f020f876a18d519a1a20598a172f1c98036f7
2012-09-25 15:27:51 -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
Jeff Sharkey
5a370882f8 Merge "Check READ_EXTERNAL enforcement outside of lock." into jb-mr1-dev 2012-09-23 13:23:39 -07:00
Dianne Hackborn
8da429e80d Fix issue #7209355, #7214271.
Issue #7209355: Intent on the secondary user results in an intent picker
in the Primary user.
Issue #7214271: Crash in system UI

Also fix a bug where I recently broke the removeTask() operation in the
activity manager where it would remove the wrong task.

Change-Id: I448c73a0e83a78d9d8d96b4629658c169888d275
2012-09-23 12:53:34 -07:00
Jeff Sharkey
c50f31d213 Check READ_EXTERNAL enforcement outside of lock.
Since SettingsProvider can call back into PMS, query the default
enforcement state before acquiring mPackages lock.

Bug: 7182437
Change-Id: Ie218aedfc7a943e5b221814af3e0356c7199b0e4
2012-09-22 17:14:02 -07:00
rich cannings
4e5753f5f6 Add setting to skip verifying ADB installs
Create a setting "verifier_verify_adb_installs" to allow developers to control
package verification on ADB installs only. If package verification is enabled,
the setting will:

0, Do not perform package verification on apps installed through ADB/ADT/USB
and perform package verification on all other installs.

1, Use package verification on all installs. (Default)

Bug: 7183252
Change-Id: I9d3eb8abb5ba5e93f8634d3135794e92ff6273b6
2012-09-21 13:26:15 -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
Dianne Hackborn
c72fc674a3 Implement multi-user PackageMonitor.
New APIs let you indicate what user(s) to monitor, and tell you
what user is changing when receiving a callback.

Fix package manager to only deliver package brpadcasts to the
running users.  (This isn't really a change in behavior, since
the activity manager would not deliver to stopped users anyway).
Make sure all broadcasts that package monitor receives also include
user information for it to use.

Update wallpaper service to (hopefully) now Really Correctly
monitor package changes per user.

Change-Id: Idd952dd274abcaeab452277d9160d1ae62919aa0
2012-09-20 14:53:18 -07:00
Amith Yamasani
599dd7ce9a DevicePolicyManager per user
Bug: 7136483

Store device policy information for each user and apply them when user switches.

Global proxy can only be controlled by owner.
Camera restriction applies to all users, if any one has an admin that disables it.
Storage encryption can only be controlled by owner, although other users can query the state.
Wipe data will only remove the user if non-zero, wipe the device, if zero.

Change-Id: I359be46c1bc3828fd13d4be3228f11495081c8f2
2012-09-18 14:28:33 -07:00
Kenny Root
6a9b2cb7fe Use shared app gid for dalvik cache
For forward-locked apps, we need to be able to read the optimized dex
file from a common place. Make it owned by the shared app GID as well.

Bug: 7178231
Change-Id: Ib36d79e8df69d58e8e1e0f167659df995dc84b84
2012-09-17 14:02:39 -07:00
rich cannings
36c67c236e Enable package verification
Turn on package verification, if a verifier exists. Play app is a verifier.

Bug: 7064853
Change-Id: Id7d478a216d10b0a612678d6a9b0ee7f2037204a
2012-09-16 16:20:23 -07:00
rich cannings
13d428e830 Send more information to verifiers
Send package name, version code and the uid of the application requesting the
install to package verifiers.

Bug: 7164155
Change-Id: I2464dc5d4551f60b4f38f7982495a8920c83e1cd
2012-09-14 14:25:52 -07:00
rich cannings
e4bf0eae06 DEFAULT_VERIFY_ENABLE turns verification off
When DEFAULT_VERIFY_ENABLE == false, package verification must be completely
off.

Bug: 7132197
Change-Id: Icc0dbb4a3f4f5f00ddadecda6cc42976618c4332
2012-09-14 13:40:30 -07:00
Kenny Root
0b2fa8ca22 Don't prematurely delete temporary files
When verification and encryption is used, the temporary file was deleted
prematurely.

Also, on next boot-up, scan the directory we use for temporary files to
clean them up if the user rebooted in the middle of installation.

Bug: 7132197
Change-Id: Ic9e8aab9a664ca00d9ac16f72e53fc43d78d21bc
2012-09-14 10:34:21 -07:00
Kenny Root
24271a8c4c Merge "Use shared app gid for forward-locked processes" into jb-mr1-dev 2012-09-13 14:43:20 -07:00
Kenny Root
aefd73d2b9 Merge "Try to avoid possible NPE" into jb-mr1-dev 2012-09-13 08:38:26 -07:00
Kenny Root
0f001d3ee0 Try to avoid possible NPE
For some reason .getParent() appears to be returning null for a data
directory. We don't need to use the parent; we can just use the path.

Bug: 7151733
Change-Id: I5e17cc14fe53669882329d67d8a7b4ec35b81104
2012-09-13 08:36:49 -07:00
Jeff Brown
f69c812f49 Wait for installd to finish starting before booting.
Fixes a race condition where the system server might
try to access /data/user/0 before it was created.  In so
doing, the system server could end up creating a directory
in that location with the wrong permissions and everything
would promptly crash.

Bug: 7151686
Change-Id: I349c12fd2b9685d2e7f6305e74f6bf7d5816b752
2012-09-12 17:00:34 -07:00
rich cannings
4a86019aee Temporarily turn off package verification
Bug: 7152858
Change-Id: Ic3b1900e486224dafcf3cce5db13e5f795650b51
2012-09-12 14:45:58 -07:00
Jeff Sharkey
b049e212ab Include user identifier in external storage paths.
When building external storage paths, always include user in path
to enable cross-user paths and aid debugging.

Each Zygote process continues to only have access to the appropriate
user-specific emulated storage through bind mounts. A second set of
mounts continue supporting legacy /sdcard-style paths. For example,
a process running as owner has these mount points:

/storage/emulated_legacy
/storage/emulated_legacy/Android/obb
/storage/emulated/0
/storage/emulated/obb

Since Environment is created before Zygote forks, we need to update
its internal paths after each process launches.

Bug: 7131382
Change-Id: I6f8c6971f2a8edfb415c14cb4ed05ff97e587a21
2012-09-11 23:11:14 -07:00
Kenny Root
e091f22e22 Use shared app gid for forward-locked processes
Use a shared app gid for each app across different users which allows
forward-locked applications to share the same APK file.

Change-Id: Ifecf51ee7865547117746f83e9733083d3dd5111
2012-09-11 15:01:26 -07:00
Kenny Root
9bbd70a963 Remove "unlinklib" command from installd
unlinklib is no longer necessary since libraries are now either stored
in an ASEC container or in /data/app-lib

Replace lib directory with a symlink to the /data/app-lib directory even
if it's a dangling link. That way developers don't name something "lib"
in their directory which gets blown away during an update.

Change-Id: I142cf13dba9c13aafbaf0ff8d5e9872cbf1cc910
2012-09-11 10:55:17 -07:00
Kenny Root
ddbe50df2c Move native libraries to /data/app-lib
Instead of unpacking libraries into /data/data/<appname>/lib, unpack
them into /data/app-lib so that multi-user applications can use the same
libraries.

Change-Id: I636dafb5a9eea8cf5a41f1360698e7695455f385
2012-09-10 11:54:36 -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
Amith Yamasani
151ec4c9f8 More multi-user methods in PM
pm can list installed packages by user now.

Bug: 6926465

Change-Id: I822311bfd6e7e2d6fb315fc484739fbf953c9bb6
2012-09-08 19:14:00 -07:00
Nick Kralevich
cd620591b7 Merge "installd: fix forward locking symlink" into jb-mr1-dev 2012-09-07 15:58:44 -07:00
Nick Kralevich
7de350a913 installd: fix forward locking symlink
installd was not creating a compatibility symlink when
installing a forward locked application.  Fix.

Bug: 7121527
Change-Id: Ied507ab2b759d8658af563e6ac8f0dbb0d286cce
2012-09-07 15:48:11 -07:00