mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-06 08:28:27 +00:00
6912560: Timezone is not set correctly on Win Vista when Security manager is present
6941137: DST broken in 6u18 when jre/lib/zi is moved elsewhere and replaced with symlink Reviewed-by: peytoia
This commit is contained in:
parent
036b7a86a5
commit
dea3e2e152
@ -30,6 +30,7 @@ import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.lang.ref.SoftReference;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.security.PrivilegedActionException;
|
||||
@ -472,17 +473,18 @@ public class ZoneInfoFile {
|
||||
|
||||
private static Map<String, ZoneInfo> zoneInfoObjects = null;
|
||||
|
||||
private static final String ziDir;
|
||||
static {
|
||||
String zi = (String) AccessController.doPrivileged(
|
||||
new sun.security.action.GetPropertyAction("java.home"))
|
||||
+ File.separator + "lib" + File.separator + "zi";
|
||||
try {
|
||||
zi = new File(zi).getCanonicalPath();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
ziDir = zi;
|
||||
}
|
||||
private static final String ziDir = AccessController.doPrivileged(
|
||||
new PrivilegedAction<String>() {
|
||||
public String run() {
|
||||
String zi = System.getProperty("java.home") +
|
||||
File.separator + "lib" + File.separator + "zi";
|
||||
try {
|
||||
zi = FileSystems.getDefault().getPath(zi).toRealPath(true).toString();
|
||||
} catch(Exception e) {
|
||||
}
|
||||
return zi;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Converts the given time zone ID to a platform dependent path
|
||||
|
||||
51
jdk/test/java/util/TimeZone/Bug6912560.java
Normal file
51
jdk/test/java/util/TimeZone/Bug6912560.java
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 6912560
|
||||
* @run main/othervm Bug6912560
|
||||
* @summary Make sure that file path canonicalization in
|
||||
* sun.util.calendar.ZoneInfoFile works with the default security
|
||||
* manager.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
|
||||
public class Bug6912560 {
|
||||
public static void main(String[] args) {
|
||||
// set the user.timezone property
|
||||
String tzname = "Asia/Tokyo";
|
||||
System.setProperty("user.timezone", tzname);
|
||||
|
||||
System.setSecurityManager(new SecurityManager());
|
||||
TimeZone tz = TimeZone.getDefault();
|
||||
if (!tzname.equals(tz.getID())) {
|
||||
throw new RuntimeException("got " + tz.getID()
|
||||
+ ", expected " + tzname);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user