diff options
author | Brad Fitzpatrick <bradfitz@android.com> | 2010-10-11 11:52:49 -0700 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@android.com> | 2010-10-11 12:17:16 -0700 |
commit | 35ca9d8a357d3e8c514740ebdbab154e865fdbbf (patch) | |
tree | 2682e5a7bd42fb1ddfa2af8e990bdceac06ff3fd /services/java | |
parent | c8511af04a442551a204b1f47fabb317bcf54be0 (diff) | |
download | frameworks_base-35ca9d8a357d3e8c514740ebdbab154e865fdbbf.zip frameworks_base-35ca9d8a357d3e8c514740ebdbab154e865fdbbf.tar.gz frameworks_base-35ca9d8a357d3e8c514740ebdbab154e865fdbbf.tar.bz2 |
On boot, advance time to at least 1970.
Otherwise various Java APIs start doing their documented "correct"
thing, which is to fail.
Bug: 3081605
Change-Id: I90f8cde745d2ddab78419e37f60eea1e81a58127
Diffstat (limited to 'services/java')
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 7f42429..a7785e2 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -35,7 +35,12 @@ import android.content.pm.IPackageManager; import android.database.ContentObserver; import android.database.Cursor; import android.media.AudioService; -import android.os.*; +import android.os.Looper; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.StrictMode; +import android.os.SystemClock; +import android.os.SystemProperties; import android.provider.Contacts.People; import android.provider.Settings; import android.server.BluetoothA2dpService; @@ -581,6 +586,16 @@ public class SystemServer native public static void init1(String[] args); public static void main(String[] args) { + if (System.currentTimeMillis() < 0) { + // If a device's clock is before 1970 (before 0), a lot of + // APIs crash dealing with negative numbers, notably + // java.io.File#setLastModified, so instead we fake it and + // hope that time from cell towers or NTP fixes it + // shortly. + Slog.w(TAG, "System clock is before 1970; setting to 1970."); + SystemClock.setCurrentTimeMillis(1); // 0 isn't allowed + } + if (SamplingProfilerIntegration.isEnabled()) { SamplingProfilerIntegration.start(); timer = new Timer(); |