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
This commit is contained in:
Andres Morales
2015-03-19 08:34:55 -07:00
parent cbdfa09fc5
commit c8f952ce9f

View File

@@ -110,8 +110,7 @@ public class PersistentDataBlockService extends SystemService {
private void formatIfOemUnlockEnabled() { private void formatIfOemUnlockEnabled() {
if (doGetOemUnlockEnabled()) { if (doGetOemUnlockEnabled()) {
synchronized (mLock) { synchronized (mLock) {
formatPartitionLocked(); formatPartitionLocked(true);
doSetOemUnlockEnabledLocked(true);
} }
} }
} }
@@ -165,7 +164,7 @@ public class PersistentDataBlockService extends SystemService {
byte[] digest = computeDigestLocked(storedDigest); byte[] digest = computeDigestLocked(storedDigest);
if (digest == null || !Arrays.equals(storedDigest, digest)) { if (digest == null || !Arrays.equals(storedDigest, digest)) {
Slog.i(TAG, "Formatting FRP partition..."); Slog.i(TAG, "Formatting FRP partition...");
formatPartitionLocked(); formatPartitionLocked(false);
return false; return false;
} }
} }
@@ -242,7 +241,7 @@ public class PersistentDataBlockService extends SystemService {
return md.digest(); return md.digest();
} }
private void formatPartitionLocked() { private void formatPartitionLocked(boolean setOemUnlockEnabled) {
DataOutputStream outputStream; DataOutputStream outputStream;
try { try {
outputStream = new DataOutputStream(new FileOutputStream(new File(mDataBlockFile))); outputStream = new DataOutputStream(new FileOutputStream(new File(mDataBlockFile)));
@@ -264,7 +263,7 @@ public class PersistentDataBlockService extends SystemService {
IoUtils.closeQuietly(outputStream); IoUtils.closeQuietly(outputStream);
} }
doSetOemUnlockEnabledLocked(false); doSetOemUnlockEnabledLocked(setOemUnlockEnabled);
computeAndWriteDigestLocked(); computeAndWriteDigestLocked();
} }