diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index a161f18b2aab0..a7951b8d5a011 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -1103,6 +1103,10 @@ public class LockPatternUtils { * {@link #CREDENTIAL_TYPE_PASSWORD} */ public @CredentialType int getCredentialTypeForUser(int userHandle) { + if (userHandle < 0) { + throw new IllegalArgumentException("Invalid userHandle: " + userHandle); + } + try { return getLockSettings().getCredentialType(userHandle); } catch (RemoteException re) { diff --git a/core/tests/coretests/src/com/android/internal/widget/LockPatternUtilsTest.java b/core/tests/coretests/src/com/android/internal/widget/LockPatternUtilsTest.java index 6167c4b80ceea..d3ce0d88c56d0 100644 --- a/core/tests/coretests/src/com/android/internal/widget/LockPatternUtilsTest.java +++ b/core/tests/coretests/src/com/android/internal/widget/LockPatternUtilsTest.java @@ -18,10 +18,13 @@ package com.android.internal.widget; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; +import static org.testng.Assert.assertThrows; +import android.content.Context; import android.os.UserHandle; import androidx.test.filters.SmallTest; +import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.runner.AndroidJUnit4; import org.junit.Test; @@ -31,6 +34,9 @@ import org.junit.runner.RunWith; @SmallTest public class LockPatternUtilsTest { + private static final int INVALID_USER_ID = -1; + private final Context mContext = InstrumentationRegistry.getInstrumentation().getContext(); + @Test public void testUserFrp_isNotRegularUser() throws Exception { assertTrue(LockPatternUtils.USER_FRP < 0); @@ -43,4 +49,10 @@ public class LockPatternUtilsTest { assertNotEquals(UserHandle.USER_CURRENT, LockPatternUtils.USER_FRP); assertNotEquals(UserHandle.USER_CURRENT_OR_SELF, LockPatternUtils.USER_FRP); } + + @Test + public void getCredentialTypeForUser_invalidUserId_throwsIllegalArgumentException() { + assertThrows(IllegalArgumentException.class, + () -> new LockPatternUtils(mContext).getCredentialTypeForUser(INVALID_USER_ID)); + } }