OSDN Git Service

Write correct checksum when formatting partition
authorAndres Morales <anmorales@google.com>
Thu, 19 Mar 2015 15:34:55 +0000 (08:34 -0700)
committerThe Android Automerger <android-build@google.com>
Thu, 26 Mar 2015 01:49:44 +0000 (18:49 -0700)
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

services/core/java/com/android/server/PersistentDataBlockService.java

index e5ace1b..97d16c0 100644 (file)
@@ -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();
     }