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:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user