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

Commit 35ca9d8a authored by Brad Fitzpatrick's avatar Brad Fitzpatrick
Browse files

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
parent c8511af0
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -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();