Fix missing MANAGE_USER error on calls to isDeviceSecure

A poorly placed clear identity was causing some crashes as
apps were required to have the MANAGE_USERS permission to
query if the current user is secured.

Change-Id: I1120b1e4405e78389fcbcb3e7d1dba8c80500da3
This commit is contained in:
Clara Bayarri
2016-01-12 17:29:29 +00:00
parent a1771110d6
commit 8d35de8445
2 changed files with 5 additions and 5 deletions

View File

@@ -893,7 +893,7 @@ public class LockPatternUtils {
*/
public boolean isSeparateProfileChallengeEnabled(int userHandle) {
UserInfo info = getUserManager().getUserInfo(userHandle);
if (!info.isManagedProfile()) {
if (info == null || !info.isManagedProfile()) {
return false;
}
return getBoolean(SEPARATE_PROFILE_CHALLENGE_KEY, false, userHandle);
@@ -904,7 +904,7 @@ public class LockPatternUtils {
*/
public boolean isSeparateProfileChallengeAllowed(int userHandle) {
UserInfo info = getUserManager().getUserInfo(userHandle);
if (!info.isManagedProfile()) {
if (info == null || !info.isManagedProfile()) {
return false;
}
return getDevicePolicyManager().isSeparateProfileChallengeAllowed(userHandle);

View File

@@ -675,12 +675,12 @@ public class TrustManagerService extends SystemService {
public boolean isDeviceSecure(int userId) throws RemoteException {
userId = ActivityManager.handleIncomingUser(getCallingPid(), getCallingUid(), userId,
false /* allowAll */, true /* requireFull */, "isDeviceSecure", null);
if (!mLockPatternUtils.isSeparateProfileChallengeEnabled(userId)) {
userId = resolveProfileParent(userId);
}
long token = Binder.clearCallingIdentity();
try {
if (!mLockPatternUtils.isSeparateProfileChallengeEnabled(userId)) {
userId = resolveProfileParent(userId);
}
return mLockPatternUtils.isSecure(userId);
} finally {
Binder.restoreCallingIdentity(token);