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
This commit is contained in:
Christopher Tate
2017-04-10 11:45:05 -07:00
parent 73edcd7328
commit 24757146d1

View File

@@ -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*");