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

Commit aa41add3 authored by Svetoslav's avatar Svetoslav
Browse files

Immediately kill a shared user process on a permission revocation.

1. When a permission is revoked we kill the app immediately but do
   not do an immediate kill for shared uid processes. This fixes it.

2. Remove system APIs that are used only by the package installer.

bug:22984670

Change-Id: I3d4ae52ea8679f894aa7c5972941263903479183
parent 8eaf18b0
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -115,7 +115,6 @@ package android {
    field public static final java.lang.String INTERNET = "android.permission.INTERNET";
    field public static final java.lang.String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
    field public static final java.lang.String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";
    field public static final java.lang.String KILL_UID = "android.permission.KILL_UID";
    field public static final java.lang.String LOCAL_MAC_ADDRESS = "android.permission.LOCAL_MAC_ADDRESS";
    field public static final java.lang.String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
    field public static final java.lang.String LOOP_RADIO = "android.permission.LOOP_RADIO";
@@ -3653,7 +3652,6 @@ package android.app {
    method public static boolean isRunningInTestHarness();
    method public static boolean isUserAMonkey();
    method public void killBackgroundProcesses(java.lang.String);
    method public void killUid(int, java.lang.String);
    method public void moveTaskToFront(int, int);
    method public void moveTaskToFront(int, int, android.os.Bundle);
    method public deprecated void restartPackage(java.lang.String);
+2 −2
Original line number Diff line number Diff line
@@ -2430,11 +2430,11 @@ public class ActivityManager {
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(Manifest.permission.KILL_UID)
    public void killUid(int uid, String reason) {
        try {
            ActivityManagerNative.getDefault().killUid(uid, reason);
            ActivityManagerNative.getDefault().killUid(UserHandle.getAppId(uid),
                    UserHandle.getUserId(uid), reason);
        } catch (RemoteException e) {
            Log.e(TAG, "Couldn't kill uid:" + uid, e);
        }
+6 −4
Original line number Diff line number Diff line
@@ -2245,9 +2245,10 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM

        case KILL_UID_TRANSACTION: {
            data.enforceInterface(IActivityManager.descriptor);
            int uid = data.readInt();
            int appId = data.readInt();
            int userId = data.readInt();
            String reason = data.readString();
            killUid(uid, reason);
            killUid(appId, userId, reason);
            reply.writeNoException();
            return true;
        }
@@ -5479,11 +5480,12 @@ class ActivityManagerProxy implements IActivityManager
        return res;
    }

    public void killUid(int uid, String reason) throws RemoteException {
    public void killUid(int appId, int userId, String reason) throws RemoteException {
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        data.writeInterfaceToken(IActivityManager.descriptor);
        data.writeInt(uid);
        data.writeInt(appId);
        data.writeInt(userId);
        data.writeString(reason);
        mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0);
        reply.readException();
+1 −1
Original line number Diff line number Diff line
@@ -447,7 +447,7 @@ public interface IActivityManager extends IInterface {

    public boolean showAssistFromActivity(IBinder token, Bundle args) throws RemoteException;

    public void killUid(int uid, String reason) throws RemoteException;
    public void killUid(int appId, int userId, String reason) throws RemoteException;

    public void hang(IBinder who, boolean allowRestart) throws RemoteException;

+1 −1
Original line number Diff line number Diff line
@@ -2575,7 +2575,7 @@
    <permission android:name="android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT"
                android:protectionLevel="signature" />

    <!-- @SystemApi Allows applications to kill UIDs.
    <!-- Allows applications to kill UIDs.
        <p>Not for use by third-party applications.
         @hide -->
    <permission android:name="android.permission.KILL_UID"
Loading