提交 477d3450 编写于 作者: O okutsu

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
上级 8de4e7fe
......@@ -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";
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 = new File(zi).getCanonicalPath();
} catch (Exception e) {
zi = FileSystems.getDefault().getPath(zi).toRealPath(true).toString();
} catch(Exception e) {
}
ziDir = zi;
return zi;
}
});
/**
* Converts the given time zone ID to a platform dependent path
......
/*
* 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);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册