diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActiveServices.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/UserManagerService.java | 26 |
2 files changed, 23 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index a19e9287aa6c..f111c3e9bb25 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -1945,7 +1945,8 @@ public final class ActiveServices { + " type=" + resolvedType + " callingUid=" + callingUid); userId = mAm.mUserController.handleIncomingUser(callingPid, callingUid, userId, false, - ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE, "service", null); + ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE, "service", + callingPackage); ServiceMap smap = getServiceMapLocked(userId); final ComponentName comp; diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index c18ca25d8c1f..28f8feec5a5a 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -100,6 +100,8 @@ import com.android.server.am.UserState; import com.android.server.storage.DeviceStorageMonitorInternal; import com.android.server.wm.ActivityTaskManagerInternal; +import libcore.io.IoUtils; + import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; @@ -121,8 +123,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Objects; -import libcore.io.IoUtils; - /** * Service for {@link UserManager}. * @@ -2638,10 +2638,12 @@ public class UserManagerService extends IUserManager.Stub { if (!isGuest && !isManagedProfile && !isDemo && isUserLimitReached()) { // If we're not adding a guest/demo user or a managed profile and the limit has // been reached, cannot add a user. + Log.e(LOG_TAG, "Cannot add user. Maximum user limit is reached."); return null; } // If we're adding a guest and there already exists one, bail. if (isGuest && findCurrentGuestUser() != null) { + Log.e(LOG_TAG, "Cannot add guest user. Guest user already exists."); return null; } // In legacy mode, restricted profile's parent can only be the owner user @@ -2884,13 +2886,26 @@ public class UserManagerService extends IUserManager.Stub { final UserData userData; int currentUser = ActivityManager.getCurrentUser(); if (currentUser == userHandle) { - Log.w(LOG_TAG, "Current user cannot be removed"); + Log.w(LOG_TAG, "Current user cannot be removed."); return false; } synchronized (mPackagesLock) { synchronized (mUsersLock) { userData = mUsers.get(userHandle); - if (userHandle == 0 || userData == null || mRemovingUserIds.get(userHandle)) { + if (userHandle == UserHandle.USER_SYSTEM) { + Log.e(LOG_TAG, "System user cannot be removed."); + return false; + } + + if (userData == null) { + Log.e(LOG_TAG, String.format( + "Cannot remove user %d, invalid user id provided.", userHandle)); + return false; + } + + if (mRemovingUserIds.get(userHandle)) { + Log.e(LOG_TAG, String.format( + "User %d is already scheduled for removal.", userHandle)); return false; } @@ -2909,7 +2924,7 @@ public class UserManagerService extends IUserManager.Stub { try { mAppOpsService.removeUser(userHandle); } catch (RemoteException e) { - Log.w(LOG_TAG, "Unable to notify AppOpsService of removing user", e); + Log.w(LOG_TAG, "Unable to notify AppOpsService of removing user.", e); } if (userData.info.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID @@ -2933,6 +2948,7 @@ public class UserManagerService extends IUserManager.Stub { } }); } catch (RemoteException e) { + Log.w(LOG_TAG, "Failed to stop user during removal.", e); return false; } return res == ActivityManager.USER_OP_SUCCESS; |