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

Commit 6cd7b812 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Mitigate race conditions in PacService" am: d7942eef

Change-Id: I420dd2720c5d447e2d6f94ea09f4f02a0a0600c4
parents 4e76706b d7942eef
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import android.util.Log;
public class PacNative {
    private static final String TAG = "PacProxy";

    private static final PacNative sInstance = new PacNative();

    private String mCurrentPac;

    private boolean mIsActive;
@@ -39,8 +41,12 @@ public class PacNative {
        System.loadLibrary("jni_pacprocessor");
    }

    PacNative() {
    private PacNative() {

    }

    public static PacNative getInstance() {
        return sInstance;
    }

    public synchronized boolean startPacSupport() {
+7 −31
Original line number Diff line number Diff line
@@ -31,43 +31,27 @@ import java.net.URL;
public class PacService extends Service {
    private static final String TAG = "PacService";

    private PacNative mPacNative;
    private ProxyServiceStub mStub;
    private PacNative mPacNative = PacNative.getInstance();
    private ProxyServiceStub mStub = new ProxyServiceStub();

    @Override
    public void onCreate() {
        super.onCreate();
        if (mPacNative == null) {
            mPacNative = new PacNative();
            mStub = new ProxyServiceStub(mPacNative);
        }
        mPacNative.startPacSupport();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mPacNative != null) {
        mPacNative.stopPacSupport();
            mPacNative = null;
            mStub = null;
        }
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        if (mPacNative == null) {
            mPacNative = new PacNative();
            mStub = new ProxyServiceStub(mPacNative);
        }
        return mStub;
    }

    private static class ProxyServiceStub extends IProxyService.Stub {
        private final PacNative mPacNative;

        public ProxyServiceStub(PacNative pacNative) {
            mPacNative = pacNative;
        }
    private class ProxyServiceStub extends IProxyService.Stub {

        @Override
        public String resolvePacFile(String host, String url) throws RemoteException {
@@ -102,20 +86,12 @@ public class PacService extends Service {

        @Override
        public void startPacSystem() throws RemoteException {
            if (Binder.getCallingUid() != Process.SYSTEM_UID) {
                Log.e(TAG, "Only system user is allowed to call startPacSystem");
                throw new SecurityException();
            }
            mPacNative.startPacSupport();
            //TODO: remove
        }

        @Override
        public void stopPacSystem() throws RemoteException {
            if (Binder.getCallingUid() != Process.SYSTEM_UID) {
                Log.e(TAG, "Only system user is allowed to call stopPacSystem");
                throw new SecurityException();
            }
            mPacNative.stopPacSupport();
            //TODO: remove
        }
    }
}