Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit bf6a0a55 authored by Michael Bestas's avatar Michael Bestas
Browse files

Merge tag 'android-security-15.0.0_r12' into staging/lineage-22.2_merge-android-security-15.0.0_r12

Android security 15.0.0 release 12

# -----BEGIN PGP SIGNATURE-----
#
# iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCaS3hIAAKCRDorT+BmrEO
# eG/5AJ4z0jNW4LcKtX2cZehrl+anXuglvwCfYaN2+hLCoF1w5qup/TucaiQ8FLc=
# =+C8p
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon Dec  1 20:40:32 2025 EET
# gpg:                using DSA key 4340D13570EF945E83810964E8AD3F819AB10E78
# gpg: Good signature from "The Android Open Source Project <initial-contribution@android.com>" [ultimate]

# By Matt Pietal (5) and others
# Via Android Build Coastguard Worker
* tag 'android-security-15.0.0_r12': (44 commits)
  Revert "RESTRICT AUTOMERGE Ignore pinned Windows"
  Fix broken WmTests
  Validate displayName for AssociationRequest
  Add missing import in test
  Don't allow 3p apps to become voice recognizer automatically
  Prevent accidental creation of PackagePreferences for non-existing packages
  Enforce a hard limit for the size of images to be decoded
  Get all accounts no matter the visibility
  Sanitize window private flags based on caller permissions.
  print: Prevent cross-user icon access
  Add onKeyEvent, to support KEYCODE_HOME
  RESTRICT AUTOMERGE: Backport Cut max duration for default transition to 1500
  Don't allow read truncation or appending for file operations.
  Allow resetting the voice recognition service if its package uninstalled
  Check length of MBR component name properties
  Disallow factory reset while in DSU mode
  Check the strongAuthTracker for lockdown instead of LockPatternUtils
  Protect shell overriding the carrier config
  Use ParceledListSlice to paginate response from getPackagesForOpsForDevice binder API
  Ensure exit animations are canceled prior to user switch
  ...

 Conflicts:
	core/java/android/app/INotificationManager.aidl
	core/java/android/companion/AssociationRequest.java
	libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java
	packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl
	packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
	packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
	packages/SystemUI/src/com/android/systemui/settings/UserTracker.kt
	packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt
	packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
	packages/SystemUI/tests/utils/src/com/android/systemui/settings/FakeUserTracker.kt
	services/autofill/java/com/android/server/autofill/ui/FillUi.java
	services/core/java/com/android/server/notification/NotificationManagerService.java
	services/core/java/com/android/server/notification/PreferencesHelper.java
	services/core/java/com/android/server/wm/ActivityRecord.java
	services/core/java/com/android/server/wm/BackgroundActivityStartController.java
	services/core/java/com/android/server/wm/BackgroundLaunchProcessController.java
	services/core/java/com/android/server/wm/Transition.java
	services/core/java/com/android/server/wm/WindowProcessController.java
	services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
	services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
	services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java
	services/tests/wmtests/src/com/android/server/wm/BackgroundLaunchProcessControllerTests.java

Change-Id: Iaf281ee5ca95c2ba9cbe7f07150bb30feaccf5b4
parents 23851c19 4ea4b391
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -8065,13 +8065,13 @@ public class AppOpsManager {
        } else {
            opCodes = null;
        }
        final List<AppOpsManager.PackageOps> result;
        try {
            result = mService.getPackagesForOpsForDevice(opCodes, persistentDeviceId);
            ParceledListSlice<PackageOps> packageOps = mService.getPackagesForOpsForDevice(opCodes,
                    persistentDeviceId);
            return packageOps == null ? Collections.emptyList() : packageOps.getList();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
        return (result != null) ? result : Collections.emptyList();
    }

    /**
@@ -8090,8 +8090,9 @@ public class AppOpsManager {
    @UnsupportedAppUsage
    public List<AppOpsManager.PackageOps> getPackagesForOps(int[] ops) {
        try {
            return mService.getPackagesForOpsForDevice(ops,
            ParceledListSlice<PackageOps> packageOps = mService.getPackagesForOpsForDevice(ops,
                    VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT);
            return packageOps == null ? null : packageOps.getList();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+21 −7
Original line number Diff line number Diff line
@@ -1490,22 +1490,36 @@ public class ApplicationPackageManager extends PackageManager {

    @Override
    public ResolveInfo resolveActivity(Intent intent, ResolveInfoFlags flags) {
        return resolveActivityAsUser(intent, flags, getUserId());
        return resolveActivityAsUser(intent, /* resolvedType= */ null, flags, getUserId());
    }

    @Override
    public ResolveInfo resolveActivityAsUser(Intent intent, int flags, int userId) {
        return resolveActivityAsUser(intent, ResolveInfoFlags.of(flags), userId);
        return resolveActivityAsUser(intent, /* resolvedType= */ null, ResolveInfoFlags.of(flags),
                userId);
    }

    @Override
    public ResolveInfo resolveActivityAsUser(Intent intent, ResolveInfoFlags flags, int userId) {
        return resolveActivityAsUser(intent, /* resolvedType= */ null, flags, userId);
    }

    @Override
    public ResolveInfo resolveActivityAsUser(Intent intent, String resolvedType,
            int flags, int userId) {
        return resolveActivityAsUser(intent, resolvedType,
                ResolveInfoFlags.of(flags), userId);
    }

    @Override
    public ResolveInfo resolveActivityAsUser(Intent intent, String resolvedType,
            ResolveInfoFlags flags, int userId) {
        try {
            return mPM.resolveIntent(
                intent,
                intent.resolveTypeIfNeeded(mContext.getContentResolver()),
                updateFlagsForComponent(flags.getValue(), userId, intent),
                userId);
            return mPM.resolveIntent(intent,
                    resolvedType == null
                        ? intent.resolveTypeIfNeeded(mContext.getContentResolver())
                        : resolvedType,
                    updateFlagsForComponent(flags.getValue(), userId, intent), userId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+0 −1
Original line number Diff line number Diff line
@@ -176,7 +176,6 @@ interface INotificationManager
    void setInterruptionFilter(String pkg, int interruptionFilter, boolean fromUser);

    NotificationChannel createConversationNotificationChannelForPackageFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user, String parentChannelId, String conversationId);
    void updateNotificationChannelGroupFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user, in NotificationChannelGroup group);
    void updateNotificationChannelFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user, in NotificationChannel channel);
    ParceledListSlice getNotificationChannelsFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user);
    ParceledListSlice getNotificationChannelGroupsFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user);
+8 −0
Original line number Diff line number Diff line
@@ -205,6 +205,14 @@ public class KeyguardManager {
     */
    public static final String EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS = "check_dpm";

    /**
     * When switching to a secure user, system server will expect a callback when the UI has
     * completed the switch.
     *
     * @hide
     */
    public static final String LOCK_ON_USER_SWITCH_CALLBACK = "onSwitchCallback";

    /**
     *
     * Password lock type, see {@link #setLock}
+10 −5
Original line number Diff line number Diff line
@@ -271,6 +271,7 @@ public final class AssociationRequest implements Parcelable {
            boolean selfManaged,
            boolean forceConfirmation,
            @Nullable Icon deviceIcon) {
        validateDisplayName(displayName);
        mSingleDevice = singleDevice;
        mDeviceFilters = requireNonNull(deviceFilters);
        mDeviceProfile = deviceProfile;
@@ -365,6 +366,7 @@ public final class AssociationRequest implements Parcelable {

    /** @hide */
    public void setDisplayName(CharSequence displayName) {
        validateDisplayName(displayName);
        mDisplayName = displayName;
    }

@@ -445,11 +447,7 @@ public final class AssociationRequest implements Parcelable {
        public Builder setDisplayName(@NonNull CharSequence displayName) {
            checkNotUsed();
            mDisplayName = requireNonNull(displayName);
            if (displayName.length() > DISPLAY_NAME_LENGTH_LIMIT) {
                throw new IllegalArgumentException("Length of the display name must be at most "
                        + DISPLAY_NAME_LENGTH_LIMIT + " characters");
            }

            validateDisplayName(displayName);
            return this;
        }

@@ -728,4 +726,11 @@ public final class AssociationRequest implements Parcelable {
            return new AssociationRequest(in);
        }
    };

    private static void validateDisplayName(@Nullable CharSequence displayName) {
        if (displayName != null && displayName.length() > DISPLAY_NAME_LENGTH_LIMIT) {
            throw new IllegalArgumentException("Length of the display name must be at most "
                    + DISPLAY_NAME_LENGTH_LIMIT + " characters");
        }
    }
}
Loading