--- a/jdk/src/share/classes/java/nio/file/Files.java Wed Feb 27 12:10:59 2013 +0400
+++ b/jdk/src/share/classes/java/nio/file/Files.java Wed Feb 27 11:44:41 2013 +0000
@@ -1485,10 +1485,19 @@
// lazy loading of default and installed file type detectors
private static class FileTypeDetectors{
static final FileTypeDetector defaultFileTypeDetector =
- sun.nio.fs.DefaultFileTypeDetector.create();
+ createDefaultFileTypeDetector();
static final List<FileTypeDetector> installeDetectors =
loadInstalledDetectors();
+ // creates the default file type detector
+ private static FileTypeDetector createDefaultFileTypeDetector() {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<FileTypeDetector>() {
+ @Override public FileTypeDetector run() {
+ return sun.nio.fs.DefaultFileTypeDetector.create();
+ }});
+ }
+
// loads all installed file type detectors
private static List<FileTypeDetector> loadInstalledDetectors() {
return AccessController
--- a/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java Wed Feb 27 12:10:59 2013 +0400
+++ b/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java Wed Feb 27 11:44:41 2013 +0000
@@ -67,6 +67,8 @@
NativeBuffer buffer = NativeBuffers.asNativeBuffer(path.getByteArrayForSysCalls());
try {
if (gioAvailable) {
+ // GIO may access file so need permission check
+ path.checkRead();
byte[] type = probeUsingGio(buffer.address());
return (type == null) ? null : new String(type);
} else {
@@ -76,7 +78,6 @@
String s = new String(type);
return s.equals(GNOME_VFS_MIME_TYPE_UNKNOWN) ? null : s;
}
-
} finally {
buffer.release();
}