Index: vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java =================================================================== --- vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java (revision 451216) +++ vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java (working copy) @@ -266,6 +266,9 @@ StringTokenizer desiredVersionTokens = new StringTokenizer( desiredVersion, "."); try { + if (!specVersionTokens.hasMoreElements() || !desiredVersionTokens.hasMoreElements()) { + throw new NumberFormatException("Empty version string"); + } while (specVersionTokens.hasMoreElements()) { int desiredVer = Integer.parseInt(desiredVersionTokens .nextToken()); @@ -280,6 +283,11 @@ * ignore - this seems to be the case when we run out of tokens * for desiredVersion */ + } catch (NullPointerException e) { + if(specVersion == null) { + throw new NumberFormatException("Empty version string"); + } + throw e; } /* @@ -293,7 +301,6 @@ return false; } } - return true; } @@ -315,7 +322,7 @@ if (jar != null) { init(); } - return sealBase != null && sealBase.equals(url); + return url.equals(sealBase); } /** @@ -365,33 +372,33 @@ } Attributes mainAttrs = manifest.getMainAttributes(); - Attributes pkgAttrs = manifest.getAttributes(name); - specTitle = (specTitle = pkgAttrs + Attributes pkgAttrs = manifest.getAttributes(name.replace('.','/')+"/"); + specTitle = pkgAttrs == null || (specTitle = pkgAttrs .getValue(Attributes.Name.SPECIFICATION_TITLE)) == null ? mainAttrs.getValue(Attributes.Name.SPECIFICATION_TITLE) : specTitle; - specVersion = (specVersion = pkgAttrs + specVersion = pkgAttrs == null || (specVersion = pkgAttrs .getValue(Attributes.Name.SPECIFICATION_VERSION)) == null ? mainAttrs.getValue(Attributes.Name.SPECIFICATION_VERSION) : specVersion; - specVendor = (specVendor = pkgAttrs + specVendor = pkgAttrs == null || (specVendor = pkgAttrs .getValue(Attributes.Name.SPECIFICATION_VENDOR)) == null ? mainAttrs.getValue(Attributes.Name.SPECIFICATION_VENDOR) : specVendor; - implTitle = (implTitle = pkgAttrs + implTitle = pkgAttrs == null || (implTitle = pkgAttrs .getValue(Attributes.Name.IMPLEMENTATION_TITLE)) == null ? mainAttrs.getValue(Attributes.Name.IMPLEMENTATION_TITLE) : implTitle; - implVersion = (implVersion = pkgAttrs + implVersion = pkgAttrs == null || (implVersion = pkgAttrs .getValue(Attributes.Name.IMPLEMENTATION_VERSION)) == null ? mainAttrs .getValue(Attributes.Name.IMPLEMENTATION_VERSION) : implVersion; - implVendor = (implVendor = pkgAttrs + implVendor = pkgAttrs == null || (implVendor = pkgAttrs .getValue(Attributes.Name.IMPLEMENTATION_VENDOR)) == null ? mainAttrs.getValue(Attributes.Name.IMPLEMENTATION_VENDOR) : implVendor; - String sealed = (sealed = pkgAttrs + String sealed = pkgAttrs == null || (sealed = pkgAttrs .getValue(Attributes.Name.SEALED)) == null ? mainAttrs .getValue(Attributes.Name.SEALED) : sealed; if (Boolean.valueOf(sealed).booleanValue()) {