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

Commit c8f952ce authored by Andres Morales's avatar Andres Morales
Browse files

Write correct checksum when formatting partition

OEM unlock enabled bit is not computed in the checksum,
causing OEM Unlocking to be disabled after the second
reboot.

Bug: 19829441
Change-Id: I100bf5d3958b89323ee35b9e97b19c162209fcd7
parent cbdfa09f
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -110,8 +110,7 @@ public class PersistentDataBlockService extends SystemService {
    private void formatIfOemUnlockEnabled() {
        if (doGetOemUnlockEnabled()) {
            synchronized (mLock) {
                formatPartitionLocked();
                doSetOemUnlockEnabledLocked(true);
                formatPartitionLocked(true);
            }
        }
    }
@@ -165,7 +164,7 @@ public class PersistentDataBlockService extends SystemService {
            byte[] digest = computeDigestLocked(storedDigest);
            if (digest == null || !Arrays.equals(storedDigest, digest)) {
                Slog.i(TAG, "Formatting FRP partition...");
                formatPartitionLocked();
                formatPartitionLocked(false);
                return false;
            }
        }
@@ -242,7 +241,7 @@ public class PersistentDataBlockService extends SystemService {
        return md.digest();
    }

    private void formatPartitionLocked() {
    private void formatPartitionLocked(boolean setOemUnlockEnabled) {
        DataOutputStream outputStream;
        try {
            outputStream = new DataOutputStream(new FileOutputStream(new File(mDataBlockFile)));
@@ -264,7 +263,7 @@ public class PersistentDataBlockService extends SystemService {
            IoUtils.closeQuietly(outputStream);
        }

        doSetOemUnlockEnabledLocked(false);
        doSetOemUnlockEnabledLocked(setOemUnlockEnabled);
        computeAndWriteDigestLocked();
    }