diff options
author | Neil Fuller <nfuller@google.com> | 2020-05-26 10:20:09 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-05-26 10:20:09 +0000 |
commit | f60c302dadf51b1f4b727e3da77ffb47cd8c398b (patch) | |
tree | 39e3bf49d2e8a780b309d8fa8211e2e84abb0334 /services/java/com/android/server/SystemServer.java | |
parent | 808cb66c5065c24a4c83041397496200c0bed2a2 (diff) | |
parent | 26fe60a1887aa55a8ecb6c8196894c7348efeae7 (diff) |
Merge "Be more defensive around invalid tzids"
Diffstat (limited to 'services/java/com/android/server/SystemServer.java')
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 0167a3b0aebe..23b1512081da 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -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(); } |