diff options
| author | Rubin Xu <rubinxu@google.com> | 2025-05-21 15:34:51 +0100 |
|---|---|---|
| committer | aoleary <seanm187@gmail.com> | 2025-10-07 19:02:12 +0000 |
| commit | 85f56e4d63b118111f2950362752412a4239acc9 (patch) | |
| tree | 90f3c16398b7a4aa147938096e75166b86251401 | |
| parent | 2a9c4738b1af74340b1fbbc2cea5839f6ef9a067 (diff) | |
Use correct API to get calling package name in CredentialStorage
Activity.getCallingPackage() does not always return the package
name of the actual calling app. getLaunchedFromPackage() should
be used instead.
Bug: 389681530
Test: manual
Flag: EXEMPT bugfix
(cherry picked from commit 70bd3efe0674bccb0d454845d86fb2402779a7bf)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:131e19e3fdf184332015e2592cff3467a360ff99)
Merged-In: Ibdbc45e53f4aa46fae79fa234705b3735bfda4cd
Change-Id: Ibdbc45e53f4aa46fae79fa234705b3735bfda4cd
| -rw-r--r-- | src/com/android/settings/security/CredentialStorage.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/com/android/settings/security/CredentialStorage.java b/src/com/android/settings/security/CredentialStorage.java index ea336314566..57a59cd287f 100644 --- a/src/com/android/settings/security/CredentialStorage.java +++ b/src/com/android/settings/security/CredentialStorage.java @@ -17,6 +17,7 @@ package com.android.settings.security; import android.app.Activity; +import android.app.ActivityManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.DialogInterface; @@ -331,15 +332,25 @@ public final class CredentialStorage extends FragmentActivity { } } + private String getCallingPackageName() { + try { + return ActivityManager.getService().getLaunchedFromPackage(getActivityToken()); + } catch (RemoteException re) { + // Error talking to ActivityManager, just give up + return null; + } + } + /** * Check that the caller is either certinstaller or Settings running in a profile of this user. */ private boolean checkCallerIsCertInstallerOrSelfInProfile() { - if (TextUtils.equals("com.android.certinstaller", getCallingPackage())) { + String callingPackage = getCallingPackageName(); + if (TextUtils.equals("com.android.certinstaller", callingPackage)) { // CertInstaller is allowed to install credentials if it has the same signature as // Settings package. return getPackageManager().checkSignatures( - getCallingPackage(), getPackageName()) == PackageManager.SIGNATURE_MATCH; + callingPackage, getPackageName()) == PackageManager.SIGNATURE_MATCH; } final int launchedFromUserId; |
