6785424: SecurityException locating physical fonts on Windows Terminal Server
Reviewed-by: campbell, jgodinez
This commit is contained in:
parent
6f0de04c87
commit
a0930ff4d4
@ -1601,19 +1601,28 @@ public final class FontManager {
|
|||||||
/* Path may be absolute or a base file name relative to one of
|
/* Path may be absolute or a base file name relative to one of
|
||||||
* the platform font directories
|
* the platform font directories
|
||||||
*/
|
*/
|
||||||
private static String getPathName(String s) {
|
private static String getPathName(final String s) {
|
||||||
File f = new File(s);
|
File f = new File(s);
|
||||||
if (f.isAbsolute()) {
|
if (f.isAbsolute()) {
|
||||||
return s;
|
return s;
|
||||||
} else if (pathDirs.length==1) {
|
} else if (pathDirs.length==1) {
|
||||||
return pathDirs[0] + File.separator + s;
|
return pathDirs[0] + File.separator + s;
|
||||||
} else {
|
} else {
|
||||||
|
String path = java.security.AccessController.doPrivileged(
|
||||||
|
new java.security.PrivilegedAction<String>() {
|
||||||
|
public String run() {
|
||||||
for (int p=0; p<pathDirs.length; p++) {
|
for (int p=0; p<pathDirs.length; p++) {
|
||||||
f = new File(pathDirs[p] + File.separator + s);
|
File f = new File(pathDirs[p] +File.separator+ s);
|
||||||
if (f.exists()) {
|
if (f.exists()) {
|
||||||
return f.getAbsolutePath();
|
return f.getAbsolutePath();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (path != null) {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return s; // shouldn't happen, but harmless
|
return s; // shouldn't happen, but harmless
|
||||||
}
|
}
|
||||||
|
48
jdk/test/java/awt/FontClass/FontAccess.java
Normal file
48
jdk/test/java/awt/FontClass/FontAccess.java
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2009 Sun Microsystems, Inc. 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.
|
||||||
|
*
|
||||||
|
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||||
|
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||||
|
* have any questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @bug 6785424
|
||||||
|
* @summary Test no SecurityException searching for a font.
|
||||||
|
* @run main FontAccess
|
||||||
|
*
|
||||||
|
* This can only test the specific bug if run on something like
|
||||||
|
* Windows Citrix Server where SystemDirectory and WindowsDirectory
|
||||||
|
* are different locations.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.image.*;
|
||||||
|
|
||||||
|
public class FontAccess {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.setSecurityManager(new SecurityManager());
|
||||||
|
Font f = new Font("Verdana", Font.PLAIN, 12);
|
||||||
|
BufferedImage bi = new BufferedImage(1,1,1);
|
||||||
|
Graphics2D g = bi.createGraphics();
|
||||||
|
g.setFont(f);
|
||||||
|
System.out.println(g.getFontMetrics());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user