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

Commit 24757146 authored by Christopher Tate's avatar Christopher Tate
Browse files

Ensure the system boots with a halfway sane time/date

Just in case the kernel or vendor glue don't initialize the system time
sensibly, we now make sure the current time at boot is at least up to the
build time of the system disk image.

Bug 36736983
Test: manual

Change-Id: I46f776300ca4f5ad01396fc17c83fc833e1713f9
parent 73edcd73
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.database.ContentObserver;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@@ -949,6 +950,16 @@ class AlarmManagerService extends SystemService {
        // because kernel doesn't keep this after reboot
        setTimeZoneImpl(SystemProperties.get(TIMEZONE_PROPERTY));

        // Also sure that we're booting with a halfway sensible current time
        if (mNativeData != 0) {
            final long systemBuildTime = Environment.getRootDirectory().lastModified();
            if (System.currentTimeMillis() < systemBuildTime) {
                Slog.i(TAG, "Current time only " + System.currentTimeMillis()
                        + ", advancing to build time " + systemBuildTime);
                setKernelTime(mNativeData, systemBuildTime);
            }
        }

        PowerManager pm = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
        mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*alarm*");