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

Commit 7628fac9 authored by Andres Morales's avatar Andres Morales Committed by android-build-merger
Browse files

Merge "Wipe FRP partition if OEM unlock enabled" into lmp-mr1-dev automerge: d656955e

automerge: c9a76941

* commit 'c9a76941':
  Wipe FRP partition if OEM unlock enabled
parents 371d77ec c9a76941
Loading
Loading
Loading
Loading
+33 −19
Original line number Diff line number Diff line
@@ -103,9 +103,19 @@ public class PersistentDataBlockService extends SystemService {
    @Override
    public void onStart() {
        enforceChecksumValidity();
        formatIfOemUnlockEnabled();
        publishBinderService(Context.PERSISTENT_DATA_BLOCK_SERVICE, mService);
    }

    private void formatIfOemUnlockEnabled() {
        if (doGetOemUnlockEnabled()) {
            synchronized (mLock) {
                formatPartitionLocked();
                doSetOemUnlockEnabledLocked(true);
            }
        }
    }

    private void enforceOemUnlockPermission() {
        mContext.enforceCallingOrSelfPermission(
                Manifest.permission.OEM_UNLOCK_STATE,
@@ -285,6 +295,28 @@ public class PersistentDataBlockService extends SystemService {
        }
    }

    private boolean doGetOemUnlockEnabled() {
        DataInputStream inputStream;
        try {
            inputStream = new DataInputStream(new FileInputStream(new File(mDataBlockFile)));
        } catch (FileNotFoundException e) {
            Slog.e(TAG, "partition not available");
            return false;
        }

        try {
            synchronized (mLock) {
                inputStream.skip(getBlockDeviceSize() - 1);
                return inputStream.readByte() != 0;
            }
        } catch (IOException e) {
            Slog.e(TAG, "unable to access persistent partition", e);
            return false;
        } finally {
            IoUtils.closeQuietly(inputStream);
        }
    }

    private native long nativeGetBlockDeviceSize(String path);
    private native int nativeWipe(String path);

@@ -410,25 +442,7 @@ public class PersistentDataBlockService extends SystemService {
        @Override
        public boolean getOemUnlockEnabled() {
            enforceOemUnlockPermission();
            DataInputStream inputStream;
            try {
                inputStream = new DataInputStream(new FileInputStream(new File(mDataBlockFile)));
            } catch (FileNotFoundException e) {
                Slog.e(TAG, "partition not available");
                return false;
            }

            try {
                synchronized (mLock) {
                    inputStream.skip(getBlockDeviceSize() - 1);
                    return inputStream.readByte() != 0;
                }
            } catch (IOException e) {
                Slog.e(TAG, "unable to access persistent partition", e);
                return false;
            } finally {
                IoUtils.closeQuietly(inputStream);
            }
            return doGetOemUnlockEnabled();
        }

        @Override