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

Commit 96c57398 authored by Neil Fuller's avatar Neil Fuller Committed by Automerger Merge Worker
Browse files

Merge "Be more defensive around invalid tzids" am: f60c302d

Change-Id: I08e1daaf9dd0a26017b18c984eb6d4093c46ed46
parents eae6b8a2 f60c302d
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import android.util.proto.ProtoOutputStream;

import libcore.timezone.ZoneInfoDb;

import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@@ -998,12 +997,7 @@ public class AlarmManager {

        // Reject this timezone if it isn't an Olson zone we recognize.
        if (mTargetSdkVersion >= Build.VERSION_CODES.M) {
            boolean hasTimeZone = false;
            try {
                hasTimeZone = ZoneInfoDb.getInstance().hasTimeZone(timeZone);
            } catch (IOException ignored) {
            }

            boolean hasTimeZone = ZoneInfoDb.getInstance().hasTimeZone(timeZone);
            if (!hasTimeZone) {
                throw new IllegalArgumentException("Timezone: " + timeZone + " is not an Olson ID");
            }
+7 −13
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.util.TimeFormatException;
import libcore.timezone.ZoneInfoDb;
import libcore.util.ZoneInfo;

import java.io.IOException;
import java.util.Locale;
import java.util.TimeZone;

@@ -1106,7 +1105,6 @@ public class Time {
        }

        private static ZoneInfo lookupZoneInfo(String timezoneId) {
            try {
            ZoneInfo zoneInfo = ZoneInfoDb.getInstance().makeTimeZone(timezoneId);
            if (zoneInfo == null) {
                zoneInfo = ZoneInfoDb.getInstance().makeTimeZone("GMT");
@@ -1115,10 +1113,6 @@ public class Time {
                throw new AssertionError("GMT not found: \"" + timezoneId + "\"");
            }
            return zoneInfo;
            } catch (IOException e) {
                // This should not ever be thrown.
                throw new AssertionError("Error loading timezone: \"" + timezoneId + "\"", e);
            }
        }

        public void switchTimeZone(String timezone) {
+11 −2
Original line number Diff line number Diff line
@@ -165,6 +165,8 @@ import com.android.server.wm.ActivityTaskManagerService;
import com.android.server.wm.WindowManagerGlobalLock;
import com.android.server.wm.WindowManagerService;

import libcore.timezone.ZoneInfoDb;

import dalvik.system.VMRuntime;

import java.io.File;
@@ -395,8 +397,9 @@ public final class SystemServer {
            // Default the timezone property to GMT if not set.
            //
            String timezoneProperty = SystemProperties.get("persist.sys.timezone");
            if (timezoneProperty == null || timezoneProperty.isEmpty()) {
                Slog.w(TAG, "Timezone not set; setting to GMT.");
            if (!isValidTimeZoneId(timezoneProperty)) {
                Slog.w(TAG, "persist.sys.timezone is not valid (" + timezoneProperty
                        + "); setting to GMT.");
                SystemProperties.set("persist.sys.timezone", "GMT");
            }

@@ -564,6 +567,12 @@ public final class SystemServer {
        throw new RuntimeException("Main thread loop unexpectedly exited");
    }

    private static boolean isValidTimeZoneId(String timezoneProperty) {
        return timezoneProperty != null
                && !timezoneProperty.isEmpty()
                && ZoneInfoDb.getInstance().hasTimeZone(timezoneProperty);
    }

    private boolean isFirstBootOrUpgrade() {
        return mPackageManagerService.isFirstBoot() || mPackageManagerService.isDeviceUpgrading();
    }