Bug 964408

Summary: java-1.8.0-openjdk: Wrong file permissions
Product: [Fedora] Fedora Reporter: Mikolaj Izdebski <mizdebsk>
Component: java-1.8.0-openjdkAssignee: Omair Majid <omajid>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 19CC: dbhole, omajid
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: java-1.8.0-openjdk-1.8.0.0-0.7.b89.fc19 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-06-01 03:11:23 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Mikolaj Izdebski 2013-05-18 08:43:30 UTC
Description of problem:
Some files installed as part of java-1.8.0-openjdk have wrong permissions (they are not world-readable). For example:

$ ls -l /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.0.x86_64/jre/lib/ext/cldrdata.jar
-rw-------. 1 root root 3860434 May 13 19:40 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.0.x86_64/jre/lib/ext/cldrdata.jar

This breaks the whole JVM.

Version-Release number of selected component (if applicable):
java-1.8.0-openjdk.x86_64 1:1.8.0.0-0.6.b89.fc19

How reproducible:
Always.

Steps to Reproduce:
[kojan@f19 test]$ cat test.java
class test {
  public static void main(String[] _) {
    System.out.println(new java.util.Date());
  }
}
$ javac test.java
$ java test

Actual results:
Exception in thread "main" java.lang.InternalError: java.io.FileNotFoundException: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.0.x86_64/jre/lib/ext/cldrdata.jar (Permission denied)
	at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:851)
	at sun.misc.URLClassPath.getResource(URLClassPath.java:202)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:357)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:353)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	at java.util.ResourceBundle$RBClassLoader.loadClass(ResourceBundle.java:478)
	at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2618)
	at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1477)
	at java.util.ResourceBundle.findBundle(ResourceBundle.java:1441)
	at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1337)
	at java.util.ResourceBundle.getBundle(ResourceBundle.java:865)
	at sun.util.resources.LocaleData$1.run(LocaleData.java:164)
	at sun.util.resources.LocaleData$1.run(LocaleData.java:160)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.util.resources.LocaleData.getBundle(LocaleData.java:160)
	at sun.util.resources.LocaleData.getTimeZoneNames(LocaleData.java:100)
	at sun.util.locale.provider.LocaleResources.getTimeZoneNames(LocaleResources.java:261)
	at sun.util.locale.provider.TimeZoneNameProviderImpl.getDisplayNameArray(TimeZoneNameProviderImpl.java:122)
	at sun.util.locale.provider.TimeZoneNameProviderImpl.getDisplayName(TimeZoneNameProviderImpl.java:98)
	at sun.util.locale.provider.TimeZoneNameUtility$TimeZoneNameGetter.getName(TimeZoneNameUtility.java:317)
	at sun.util.locale.provider.TimeZoneNameUtility$TimeZoneNameGetter.getObject(TimeZoneNameUtility.java:270)
	at sun.util.locale.provider.TimeZoneNameUtility$TimeZoneNameGetter.getObject(TimeZoneNameUtility.java:256)
	at sun.util.locale.provider.LocaleServiceProviderPool.getLocalizedObjectImpl(LocaleServiceProviderPool.java:299)
	at sun.util.locale.provider.LocaleServiceProviderPool.getLocalizedObject(LocaleServiceProviderPool.java:283)
	at sun.util.locale.provider.TimeZoneNameUtility.retrieveDisplayName(TimeZoneNameUtility.java:135)
	at java.util.TimeZone.getDisplayName(TimeZone.java:404)
	at java.util.Date.toString(Date.java:1044)
	at java.lang.String.valueOf(String.java:2984)
	at java.io.PrintStream.println(PrintStream.java:821)
	at test.main(test.java:3)
Caused by: java.io.FileNotFoundException: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.0.x86_64/jre/lib/ext/cldrdata.jar (Permission denied)
	at java.util.zip.ZipFile.open(Native Method)
	at java.util.zip.ZipFile.<init>(ZipFile.java:214)
	at java.util.zip.ZipFile.<init>(ZipFile.java:144)
	at java.util.jar.JarFile.<init>(JarFile.java:158)
	at java.util.jar.JarFile.<init>(JarFile.java:95)
	at sun.misc.URLClassPath$JarLoader.getJarFile(URLClassPath.java:723)
	at sun.misc.URLClassPath$JarLoader.access$600(URLClassPath.java:604)
	at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:684)
	at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:677)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.misc.URLClassPath$JarLoader.ensureOpen(URLClassPath.java:676)
	at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:849)
	... 34 more

Expected results:
Current date is printed.

Comment 1 Fedora Update System 2013-05-21 16:03:20 UTC
java-1.8.0-openjdk-1.8.0.0-0.7.b89.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/java-1.8.0-openjdk-1.8.0.0-0.7.b89.fc19

Comment 2 Omair Majid 2013-05-21 16:33:06 UTC
The workaround above should be sufficient for now.

The root of the problem appears to be java-1.7.0-openjdk (which is used to build java-1.8.0-openjdk), which mangles permissions on 'jar uf':
http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2013-May/023369.html

Comment 3 Fedora Update System 2013-05-22 22:38:17 UTC
Package java-1.8.0-openjdk-1.8.0.0-0.7.b89.fc19:
* should fix your issue,
* was pushed to the Fedora 19 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing java-1.8.0-openjdk-1.8.0.0-0.7.b89.fc19'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2013-8859/java-1.8.0-openjdk-1.8.0.0-0.7.b89.fc19
then log in and leave karma (feedback).

Comment 4 Fedora Update System 2013-06-01 03:11:23 UTC
java-1.8.0-openjdk-1.8.0.0-0.7.b89.fc19 has been pushed to the Fedora 19 stable repository.  If problems still persist, please make note of it in this bug report.