Mercurial > hg > icedtea7
view patches/boot/ecj-multicatch.patch @ 2892:11416bb1b308 icedtea-2.7.0pre07
Bump to icedtea-2.7.0pre07.
Upstream changes:
- Bump to icedtea-2.7.0pre07
- PR2938: Fix build of 8148487 backport
- PR3102: Extend 8022594 to AixPollPort
- S4858370: JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
- S4963723: Implement SHA-224
- S6414899: P11Digest should support cloning
- S6425769: Allow specifying an address to bind JMX remote connector
- S6854417: TESTBUG: java/util/regex/RegExTest.java fails intermittently
- S6953295: Move few sun.security.{util, x509, pkcs} classes used by keytool/jarsigner to another package
- S6956398: make ephemeral DH key match the length of the certificate key
- S6961123: setWMClass fails to null-terminate WM_CLASS string
- S6966259: Make PrincipalName and Realm immutable
- S7044060: Need to support NSA Suite B Cryptography algorithms
- S7060849: Eliminate pack200 build warnings
- S7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
- S7069870: Parts of the JDK erroneously rely on generic array initializers with diamond
- S7081817: test/sun/security/provider/certpath/X509CertPath/IllegalCertiticates.java failing
- S7102686: Restructure timestamp code so that jars and modules can more easily share the same code
- S7105780: Add SSLSocket client/SSLEngine server to templates directory
- S7127906: (launcher) convert the launcher regression tests to java
- S7142339: PKCS7.java is needlessly creating SHA1PRNG SecureRandom instances when timestamping is not done
- S7152582: PKCS11 tests should use the NSS libraries available in the OS
- S7167988: PKIX CertPathBuilder in reverse mode doesn't work if more than one trust anchor is specified
- S7192202: Make sure keytool prints both unknown and unparseable extensions
- S7194449: String resources for Key Tool and Policy Tool should be in their respective packages
- S7196855: autotest.sh fails on ubuntu because libsoftokn.so not found
- S7200682: TEST_BUG: keytool/autotest.sh still has problems with libsoftokn.so
- S8002116: This JdbReadTwiceTest.sh gets an exit 1
- S8002306: (se) Selector.open fails if invoked with thread interrupt status set [win]
- S8004007: test/sun/tools/jinfo/Basic.sh fails on when runSA is set to true
- S8005226: java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java fails intermittently
- S8006935: Need to take care of long secret keys in HMAC/PRF compuation
- S8007890: [TESTBUG] JcmdWithNMTDisabled.java fails when invoked with NMT explicitly turned on
- S8009636: JARSigner including TimeStamp PolicyID (TSAPolicyID) as defined in RFC3161
- S8014097: add doPrivileged methods with limited privilege scope
- S8019341: Update CookieHttpsClientTest to use the newer framework.
- S8021191: Add isAuthorized check to limited doPrivileged methods
- S8022228: Intermittent test failures in sun/security/ssl/javax/net/ssl/NewAPIs
- S8022439: Fix lint warnings in sun.security.ec
- S8022594: Potential deadlock in <clinit> of sun.nio.ch.Util/IOUtil
- S8023546: sun/security/mscapi/ShortRSAKey1024.sh fails intermittently
- S8027705: com/sun/jdi/JdbMethodExitTest.sh fails when a background thread is generating events.
- S8028537: PPC64: Updated the JDK regression tests to run on AIX
- S8028780: JDK KRB5 module throws OutOfMemoryError when CCache is corrupt
- S8036132: Tab characters in test/com/sun/jdi files
- S8036612: [parfait] JNI exception pending in jdk/src/windows/native/sun/security/mscapi/security.cpp
- S8037557: test SessionCacheSizeTests.java timeout
- S8038837: Add support to jarsigner for specifying timestamp hash algorithm
- S8038963: com/sun/jdi tests fail because cygwin's ps sometimes misses processes
- S8039921: SHA1WithDSA with key > 1024 bits not working
- S8044419: TEST_BUG: com/sun/jdi/JdbReadTwiceTest.sh fails when run under root
- S8048030: Expectations should be consistent
- S8059054: Better URL processing
- S8059661: Test SoftReference and OOM behavior
- S8064331: JavaSecurityAccess.doIntersectionPrivilege() drops the information about the domain combiner of the stack ACC
- S8068761: [TEST_BUG] java/nio/channels/ServerSocketChannel/AdaptServerSocket.java failed with SocketTimeoutException
- S8068842: Better JAXP data handling
- S8072753: Nondeterministic wrong answer on arithmetic
- S8072932: Test fails with java.security.AccessControlException: access denied ("java.security.SecurityPermission" "getDomainCombiner")
- S8073735: [TEST_BUG] compiler/loopopts/CountedLoopProblem.java got OOME
- S8074068: Cleanup in src/share/classes/sun/security/x509/
- S8074146: [TEST_BUG] jdb has succeded to read an unreadable file
- S8075773: jps running as root fails after the fix of JDK-8050807
- S8076339: Better handling of remote object invocation
- S8076383: Better CORBA exception handling
- S8076387: Better CORBA value handling
- S8076392: Improve IIOPInputStream consistency
- S8076413: Better JRMP message handling
- S8076506: Increment minor version of HSx for 7u91 and initialize the build number
- S8078427: More supportive home environment
- S8078440: Safer managed types
- S8078822: 8068842 fix missed one new file PrimeNumberSequenceGenerator.java
- S8079323: Serialization compatibility for Templates: need to exclude Hashtable from serialization
- S8079410: Hotspot version to share the same update and build version from JDK
- S8079718: IIOP Input Stream Hooking
- S8080541: More direct property handling
- S8080688: Service for DGC services
- S8081297: SSL Problem with Tomcat
- S8081475: SystemTap does not work when JDK is compiled with GCC 5
- S8081760: Better group dynamics
- S8086092: More palette improvements
- S8086733: Improve namespace handling
- S8087118: Remove missing package from java.security files
- S8087120: [GCC5] java.lang.StackOverflowError on Zero JVM initialization on non x86 platforms.
- S8087350: Improve array conversions
- S8098547: (tz) Support tzdata2015e
- S8103671: More objective stream classes
- S8103675: Better Binary searches
- S8129952: Ensure thread consistency
- S8130078: Document better processing
- S8130193: Improve HTTP connections
- S8130253: ObjectStreamClass.getFields too restrictive
- S8130710: Better attributes processing
- S8130735: javax.swing.TimerQueue: timer fires late when another timer starts
- S8130864: Better server identity handling
- S8130891: (bf) More direct buffering
- S8131181: Increment minor version of HSx for 7u95 and initialize the build number
- S8131291: Perfect parameter patterning
- S8132042: Preserve layout presentation
- S8132051: Better byte behavior
- S8132082: Let OracleUcrypto accept RSAPrivateKey
- S8132210: Reinforce JMX collector internals
- S8132988: Better printing dialogues
- S8133321: (tz) Support tzdata2015f
- S8133962: More general limits
- S8134297: NPE in GSSNameElement nameType check
- S8134605: Partial rework of the fix for 8081297
- S8134650: Xsl transformation gives different results in 8u66
- S8134861: XSLT: Extension func call cause exception if namespace URI contains partial package name
- S8135043: ObjectStreamClass.getField(String) too restrictive
- S8135307: CompletionFailure thrown when calling FieldDoc.type, if the field's type is missing
- S8137060: JMX memory management improvements
- S8138593: Make DSA more fair
- S8138716: (tz) Support tzdata2015g
- S8139008: Better state table management
- S8139012: Better font substitutions
- S8139017: More stable image decoding
- S8139436: sun.security.mscapi.KeyStore might load incomplete data
- S8140244: Port fix of JDK-8075773 to MacOSX
- S8140244, PR3171: Port fix of JDK-8075773 to AIX
- S8140344: add support for 3 digit update release numbers
- S8140543: Arrange font actions
- S8141213: [Parfait]Potentially blocking function GetArrayLength called in JNI critical region at line 239 of jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c in function GET_ARRAYS
- S8141229: [Parfait] Null pointer dereference in cmsstrcasecmp of cmserr.c
- S8141287: Add MD5 to jdk.certpath.disabledAlgorithms - Take 2
- S8142882: rebinding of the receiver of a DirectMethodHandle may allow a protected method to be accessed
- S8142928: [TEST_BUG] sun/security/provider/certpath/ReverseBuilder/ReverseBuild.java 8u71 failure
- S8143002: [Parfait] JNI exception pending in fontpath.c:1300
- S8143132: L10n resource file translation update
- S8143167: Better buffering of XML strings
- S8143185: Cleanup for handling proxies
- S8143941: Update splashscreen displays
- S8144313: Test SessionTimeOutTests can be timeout
- S8144430: Improve JMX connections
- S8144773: Further reduce use of MD5
- S8144955: Wrong changes were pushed with 8143942
- S8145017: Add support for 3 digit hotspot minor version numbers
- S8145446: Perfect pipe placement
- S8145551: Test failed with Crash for Improved font lookups
- S8145982: JMXInterfaceBindingTest is failing intermittently
- S8146015: JMXInterfaceBindingTest is failing intermittently for IPv6 addresses
- S8146387: Test SSLSession/SessionCacheSizeTests socket accept timed out
- S8146477: [TEST_BUG] ClientJSSEServerJSSE.java failing again
- S8146494: Better ligature substitution
- S8146498: Better device table adjustments
- S8146669: Test SessionTimeOutTests fails intermittently
- S8146967: [TEST_BUG] javax/security/auth/SubjectDomainCombiner/Optimize.java should use 4-args ProtectionDomain constructor
- S8146993: Several javax/management/remote/mandatory regression tests fail after JDK-8138811
- S8147466: Add -fno-strict-overflow to IndicRearrangementProcessor{,2}.cpp
- S8147567: InterpreterRuntime::post_field_access not updated for boolean in JDK-8132051
- S8147771: Construction of static protection domains under Javax custom policy
- S8147857: [TEST] RMIConnector logs attribute names incorrectly
- S8148446: (tz) Support tzdata2016a
- S8148475: Missing SA Bytecode updates.
- S8148487: PPC64: Better byte behavior
- S8148872: Complete name checking
- S8149170: Better byte behavior for native arguments
- S8149367: PolicyQualifierInfo/index_Ctor JCk test fails with IOE: Invalid encoding for PolicyQualifierInfo
- S8149962: Better delineation of XML processing
- S8150012: Better byte behavior for reflection
- S8150752: Share Class Data
- S8150790: 8u75 L10n resource file translation update
- S8151841: Build needs additional flags to compile with GCC 6
- S8151876: (tz) Support tzdata2016d
- S8151925: Font reference improvements
- S8152335: Improve MethodHandle consistency
- S8152479: Coded byte streams
- S8153673: [BACKOUT] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
- S8154210: Zero: Better byte behaviour
- S8154413: AArch64: Better byte behaviour
- S8155981: Bolster bytecode verification
- S8155985: Persistent Parameter Processing
- S8157077: 8u101 L10n resource file updates
- S8158571: Additional method handle validation
- S8161262: Fix jdk build with gcc 4.1.2: -fno-strict-overflow not known.
- S8162344: The API changes made by CR 7064075 need to be reverted
ChangeLog:
2016-09-24 Andrew John Hughes <gnu.andrew@member.fsf.org>
Bump to icedtea-2.7.0pre07.
* Makefile.am,
(JDK_UPDATE_VERSION): Set to 111.
(BUILD_VERSION): Set to b01.
(CORBA_CHANGESET): Update to icedtea-2.7.0pre07.
(JAXP_CHANGESET): Likewise.
(JAXWS_CHANGESET): Likewise.
(JDK_CHANGESET): Likewise.
(LANGTOOLS_CHANGESET): Likewise.
(OPENJDK_CHANGESET): Likewise.
(CORBA_SHA256SUM): Likewise.
(JAXP_SHA256SUM): Likewise.
(JAXWS_SHA256SUM): Likewise.
(JDK_SHA256SUM): Likewise.
(LANGTOOLS_SHA256SUM): Likewise.
(OPENJDK_SHA256SUM): Likewise.
* configure.ac: Bump to 2.7.0pre07.
* hotspot.map.in: Update to icedtea-2.7.0pre07.
* patches/boot/ecj-diamond.patch:
Add numerous cases in JAXP classes, along with
com.sun.java.util.jar.pack, java.security.Provider,
java.security.Security, javax.crypto.Cipher,
javax.crypto.CryptoAllPermission,
javax.crypto.CryptoPermissions,
javax.crypto.CryptoPolicyParser,
javax.crypto.JceSecurity, javax.crypto.JceSecurityManager,
javax.management.remote.rmi.RMIJRMPServerImpl,
sun.reflect.annotation.AnnotationInvocationHandler,
sun.security.krb5.Krb5ServiceLocator,
sun.security.provider.certpath.CertStoreHelper,
sun.security.provider.certpath.ssl.SSLServerCertStore,
sun.security.provider.certpath.URICertStore and
sun.security.ssl.DHCrypt
* patches/boot/ecj-multicatch.patch:
Add sun.security.krb5.PrincipalName,
java.lang.invoke.MemberName,
sun.invoke.util.VerifyAccess,
javax.crypto.EncryptedPrivateKeyInfo,
javax.crypto.SealedObject,
sun.security.provider.certpath.URICertStore,
sun.security.ssl.RSAClientKeyExchange,
sun.security.pkcs11.P11KeyStore,
sun.security.pkcs11.P11RSAKeyFactory and
sun.security.tools.keytool.Main
* patches/boot/ecj-stringswitch.patch:
Add cases in
sun.security.krb5.Config,
sun.security.provider.certpath.X509CertPath,
sun.security.ssl.HandshakeMessage,
sun.security.ssl.X509KeyManagerImpl,
sun.security.pkcs11.Config,
sun.security.pkcs11.P11Key,
sun.security.sasl.digest.DigestMD5Base,
sun.security.sasl.digest.DigestMD5Server,
sun.security.sasl.ntlm.NTLMClient,
sun.security.sasl.ntlm.NTLMServer and
sun.security.sasl.util.AbstractSaslImpl.
* patches/boot/ecj-trywithresources.patch:
Add cases in
sun.security.provider.certpath.URICertStore,
sun.security.tools.KeyStoreUtil,
sun.security.tools.keytool.Main.
author | Andrew John Hughes <gnu_andrew@member.fsf.org> |
---|---|
date | Wed, 28 Sep 2016 07:32:57 +0100 |
parents | 761344512703 |
children | df0f259a2fcc |
line wrap: on
line source
diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java --- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2015-07-19 18:19:26.000000000 +0100 +++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2015-09-08 09:48:23.152974575 +0100 @@ -145,7 +145,9 @@ final String name = c.name(); ei = new EncodingInfo(name, name); _encodingInfos.putEncoding(normalizedEncoding, ei); - } catch (IllegalCharsetNameException | UnsupportedCharsetException x) { + } catch (IllegalCharsetNameException x) { + ei = new EncodingInfo(null,null); + } catch (UnsupportedCharsetException x) { ei = new EncodingInfo(null,null); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java --- openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java 2015-09-08 09:48:23.156974510 +0100 @@ -402,7 +402,13 @@ try { ServerNotifForwarder.checkMBeanPermission(this.mBeanServer, candidate.getObjectName(),"addNotificationListener"); - } catch (InstanceNotFoundException | SecurityException e) { + } catch (InstanceNotFoundException e) { + if (logger.debugOn()) { + logger.debug("fetchNotifications", "candidate: " + candidate + " skipped. exception " + e); + } + ++nextSeq; + continue; + } catch (SecurityException e) { if (logger.debugOn()) { logger.debug("fetchNotifications", "candidate: " + candidate + " skipped. exception " + e); } diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/PrintStream.java openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java --- openjdk-boot.orig/jdk/src/share/classes/java/io/PrintStream.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java 2015-09-08 09:48:23.156974510 +0100 @@ -91,7 +91,10 @@ requireNonNull(csn, "charsetName"); try { return Charset.forName(csn); - } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) { + } catch (IllegalCharsetNameException unused) { + // UnsupportedEncodingException should be thrown + throw new UnsupportedEncodingException(csn); + } catch (UnsupportedCharsetException unused) { // UnsupportedEncodingException should be thrown throw new UnsupportedEncodingException(csn); } diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/PrintWriter.java openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java --- openjdk-boot.orig/jdk/src/share/classes/java/io/PrintWriter.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java 2015-09-08 09:48:23.156974510 +0100 @@ -85,7 +85,10 @@ Objects.requireNonNull(csn, "charsetName"); try { return Charset.forName(csn); - } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) { + } catch (IllegalCharsetNameException unused) { + // UnsupportedEncodingException should be thrown + throw new UnsupportedEncodingException(csn); + } catch (UnsupportedCharsetException unused) { // UnsupportedEncodingException should be thrown throw new UnsupportedEncodingException(csn); } diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java --- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java 2015-09-08 09:48:23.156974510 +0100 @@ -748,7 +748,9 @@ Class<?> fieldType = Wrapper.forBasicType(types.charAt(index)).primitiveType(); try { return LOOKUP.findGetter(cbmhClass, fieldName, fieldType); - } catch (NoSuchFieldException | IllegalAccessException e) { + } catch (NoSuchFieldException e) { + throw newInternalError(e); + } catch (IllegalAccessException e) { throw newInternalError(e); } } @@ -802,7 +804,13 @@ static MethodHandle makeCbmhCtor(Class<? extends BoundMethodHandle> cbmh, String types) { try { return linkConstructor(LOOKUP.findConstructor(cbmh, MethodType.fromMethodDescriptorString(makeSignature(types, true), null))); - } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | TypeNotPresentException e) { + } catch (NoSuchMethodException e) { + throw newInternalError(e); + } catch (IllegalAccessException e) { + throw newInternalError(e); + } catch (IllegalArgumentException e) { + throw newInternalError(e); + } catch (TypeNotPresentException e) { throw newInternalError(e); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/LambdaForm.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/LambdaForm.java --- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/LambdaForm.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/LambdaForm.java 2015-09-08 09:48:23.156974510 +0100 @@ -456,9 +456,11 @@ traceInterpreter("compileToBytecode", this); isCompiled = true; return vmentry; - } catch (Error | Exception ex) { + } catch (Error ex) { throw newInternalError(this.toString(), ex); - } + } catch (Exception ex) { + throw newInternalError(this.toString(), ex); + } } private static final ConcurrentHashMap<String,LambdaForm> PREPARED_FORMS; @@ -1548,9 +1550,11 @@ MemberName zmem = new MemberName(LambdaForm.class, "zero"+bt, MethodType.methodType(wrap.primitiveType()), REF_invokeStatic); try { zmem = IMPL_NAMES.resolveOrFail(REF_invokeStatic, zmem, null, NoSuchMethodException.class); - } catch (IllegalAccessException|NoSuchMethodException ex) { + } catch (IllegalAccessException ex) { throw newInternalError(ex); - } + } catch (NoSuchMethodException ex) { + throw newInternalError(ex); + } NamedFunction zcon = new NamedFunction(zmem); Name n = new Name(zcon).newIndex(0); assert(n.type == ALL_TYPES.charAt(tn)); diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java --- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2015-09-08 09:48:23.156974510 +0100 @@ -264,7 +264,12 @@ continue; } throw new InternalError(err); - } catch (NoSuchFieldException | IllegalAccessException ex) { + } catch (NoSuchFieldException ex) { + String err = (name+": JVM has "+vmval+" which Java does not define"); + // ignore exotic ops the JVM cares about; we just wont issue them + //System.err.println("warning: "+err); + continue; + } catch (IllegalAccessException ex) { String err = (name+": JVM has "+vmval+" which Java does not define"); // ignore exotic ops the JVM cares about; we just wont issue them //System.err.println("warning: "+err); diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java --- openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java 2015-09-08 09:48:23.156974510 +0100 @@ -606,7 +606,9 @@ // create an MXBean proxy return JMX.newMXBeanProxy(connection, objName, mxbeanInterface, emitter); - } catch (InstanceNotFoundException|MalformedObjectNameException e) { + } catch (InstanceNotFoundException e) { + throw new IllegalArgumentException(e); + } catch (MalformedObjectNameException e) { throw new IllegalArgumentException(e); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java --- openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java 2015-09-08 09:48:23.156974510 +0100 @@ -1030,10 +1030,10 @@ dir, redirects, redirectErrorStream); - } catch (IOException | IllegalArgumentException e) { + } catch (IOException e) { String exceptionInfo = ": " + e.getMessage(); Throwable cause = e; - if ((e instanceof IOException) && security != null) { + if (security != null) { // Can not disclose the fail reason for read-protected files. try { security.checkRead(prog); @@ -1045,6 +1045,16 @@ // It's much easier for us to create a high-quality error // message than the low-level C code which found the problem. throw new IOException( + "Cannot run program \"" + prog + "\"" + + (dir == null ? "" : " (in directory \"" + dir + "\")") + + exceptionInfo, + cause); + } catch (IllegalArgumentException e) { + String exceptionInfo = ": " + e.getMessage(); + Throwable cause = e; + // It's much easier for us to create a high-quality error + // message than the low-level C code which found the problem. + throw new IOException( "Cannot run program \"" + prog + "\"" + (dir == null ? "" : " (in directory \"" + dir + "\")") + exceptionInfo, diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java --- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java 2015-09-08 09:48:23.156974510 +0100 @@ -762,7 +762,9 @@ private static Object newInstance(Constructor<?> cons, InvocationHandler h) { try { return cons.newInstance(new Object[] {h} ); - } catch (IllegalAccessException | InstantiationException e) { + } catch (IllegalAccessException e) { + throw new InternalError(e.toString()); + } catch (InstantiationException e) { throw new InternalError(e.toString()); } catch (InvocationTargetException e) { Throwable t = e.getCause(); diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/charset/Charset.java openjdk-boot/jdk/src/share/classes/java/nio/charset/Charset.java --- openjdk-boot.orig/jdk/src/share/classes/java/nio/charset/Charset.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/nio/charset/Charset.java 2015-09-08 09:48:23.156974510 +0100 @@ -440,8 +440,9 @@ } catch (ClassNotFoundException x) { // Extended charsets not available // (charsets.jar not present) - } catch (InstantiationException | - IllegalAccessException x) { + } catch (InstantiationException x) { + throw new Error(x); + } catch (IllegalAccessException x) { throw new Error(x); } return null; diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java openjdk-boot/jdk/src/share/classes/java/util/Formatter.java --- openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java 2015-09-08 09:48:23.156974510 +0100 @@ -1857,7 +1857,10 @@ Objects.requireNonNull(csn, "charsetName"); try { return Charset.forName(csn); - } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) { + } catch (IllegalCharsetNameException unused) { + // UnsupportedEncodingException should be thrown + throw new UnsupportedEncodingException(csn); + } catch (UnsupportedCharsetException unused) { // UnsupportedEncodingException should be thrown throw new UnsupportedEncodingException(csn); } diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Scanner.java openjdk-boot/jdk/src/share/classes/java/util/Scanner.java --- openjdk-boot.orig/jdk/src/share/classes/java/util/Scanner.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/util/Scanner.java 2015-09-08 09:48:23.160974446 +0100 @@ -633,7 +633,10 @@ Objects.requireNonNull(csn, "charsetName"); try { return Charset.forName(csn); - } catch (IllegalCharsetNameException|UnsupportedCharsetException e) { + } catch (IllegalCharsetNameException e) { + // IllegalArgumentException should be thrown + throw new IllegalArgumentException(e); + } catch (UnsupportedCharsetException e) { // IllegalArgumentException should be thrown throw new IllegalArgumentException(e); } @@ -684,7 +687,9 @@ Objects.requireNonNull(charsetName, "charsetName"); try { return Charset.forName(charsetName).newDecoder(); - } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) { + } catch (IllegalCharsetNameException unused) { + throw new IllegalArgumentException(charsetName); + } catch (UnsupportedCharsetException unused) { throw new IllegalArgumentException(charsetName); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CipherInputStream.java openjdk-boot/jdk/src/share/classes/javax/crypto/CipherInputStream.java --- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CipherInputStream.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/javax/crypto/CipherInputStream.java 2015-09-08 09:49:34.295820122 +0100 @@ -116,7 +116,10 @@ done = true; try { obuffer = cipher.doFinal(); - } catch (IllegalBlockSizeException | BadPaddingException e) { + } catch (IllegalBlockSizeException e) { + obuffer = null; + throw new IOException(e); + } catch (BadPaddingException e) { obuffer = null; throw new IOException(e); } @@ -322,7 +325,10 @@ try { cipher.doFinal(); } - catch (BadPaddingException | IllegalBlockSizeException ex) { + catch (BadPaddingException ex) { + // Catch exceptions as the rest of the stream is unused. + } + catch (IllegalBlockSizeException ex) { // Catch exceptions as the rest of the stream is unused. } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CipherOutputStream.java openjdk-boot/jdk/src/share/classes/javax/crypto/CipherOutputStream.java --- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CipherOutputStream.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/javax/crypto/CipherOutputStream.java 2015-09-08 09:48:23.164974381 +0100 @@ -208,7 +208,9 @@ closed = true; try { obuffer = cipher.doFinal(); - } catch (IllegalBlockSizeException | BadPaddingException e) { + } catch (IllegalBlockSizeException e) { + obuffer = null; + } catch (BadPaddingException e) { obuffer = null; } try { diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java openjdk-boot/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java --- openjdk-boot.orig/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java 2015-09-08 09:48:23.160974446 +0100 @@ -113,7 +113,10 @@ Method m = c.getDeclaredMethod("legacyMergeSort", new Class[]{Object[].class, Comparator.class}); m.setAccessible(true); return m; - } catch (ClassNotFoundException | NoSuchMethodException e) { + } catch (ClassNotFoundException e) { + // using default sorting algo + return null; + } catch (NoSuchMethodException e) { // using default sorting algo return null; } @@ -181,7 +184,9 @@ Object[] a = l.toArray(); try { legacyMergeSortMethod.invoke(null, a, c); - } catch (IllegalAccessException | InvocationTargetException e) { + } catch (InvocationTargetException e) { + return false; + } catch (IllegalAccessException e) { return false; } ListIterator<Component> i = l.listIterator(); diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java --- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java 2015-09-08 09:48:23.160974446 +0100 @@ -482,7 +482,9 @@ FILL_NEW_TYPED_ARRAY = IMPL_LOOKUP .findStatic(THIS_CLASS, "fillNewTypedArray", MethodType.methodType(Object[].class, Object[].class, Integer.class, Object[].class)); - } catch (NoSuchMethodException | IllegalAccessException ex) { + } catch (NoSuchMethodException ex) { + throw newInternalError("uncaught exception", ex); + } catch (IllegalAccessException ex) { throw newInternalError("uncaught exception", ex); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java --- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java 2015-09-08 09:48:23.160974446 +0100 @@ -296,7 +296,16 @@ active.put(id, entry); return entry.mobj; - } catch (NoSuchMethodException | NoSuchMethodError e) { + } catch (NoSuchMethodException e) { + /* user forgot to provide activatable constructor? + * or code recompiled and user forgot to provide + * activatable constructor? + */ + throw new ActivationException + ("Activatable object must provide an activation"+ + " constructor", e ); + + } catch (NoSuchMethodError e) { /* user forgot to provide activatable constructor? * or code recompiled and user forgot to provide * activatable constructor? diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java --- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java 2015-09-08 09:48:23.160974446 +0100 @@ -262,11 +262,14 @@ annotation = urlsToPath(urls); } - } catch (SecurityException | IOException e) { + } catch (SecurityException e) { /* * SecurityException: If access was denied to the knowledge of * the class loader's URLs, fall back to the default behavior. * + */ + } catch (IOException e) { + /* * IOException: This shouldn't happen, although it is declared * to be thrown by openConnection() and getPermission(). If it * does happen, forget about this class loader's URLs and diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java --- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java 2015-09-08 09:48:23.160974446 +0100 @@ -208,7 +208,9 @@ return initialSocket; - } catch (UnknownHostException | NoRouteToHostException e) { + } catch (UnknownHostException e) { + initialFailure = e; + } catch (NoRouteToHostException e) { initialFailure = e; } catch (SocketException e) { if (eagerHttpFallback) { @@ -273,7 +275,9 @@ } // if connector ever does get socket, it won't be used connector.notUsed(); - } catch (UnknownHostException | NoRouteToHostException e) { + } catch (UnknownHostException e) { + initialFailure = e; + } catch (NoRouteToHostException e) { initialFailure = e; } catch (SocketException e) { if (eagerHttpFallback) { diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java --- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java 2015-09-08 09:48:23.160974446 +0100 @@ -623,7 +623,10 @@ try { TCPEndpoint.shedConnectionCaches(); // REMIND: should we retry createSocket? - } catch (OutOfMemoryError | Exception mem) { + } catch (OutOfMemoryError mem) { + // don't quit if out of memory + // or shed fails non-catastrophically + } catch (Exception mem) { // don't quit if out of memory // or shed fails non-catastrophically } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/PAData.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/PAData.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java 2015-09-08 09:48:23.160974446 +0100 @@ -280,7 +280,9 @@ .append(info.getSalt()) .append('\n'); } - } catch (IOException|Asn1Exception e) { + } catch (Asn1Exception e) { + sb.append("\t <Unparseable PA-ETYPE-INFO>\n"); + } catch (IOException e) { sb.append("\t <Unparseable PA-ETYPE-INFO>\n"); } } @@ -307,7 +309,9 @@ .encodeBuffer(s2kparams)); } } - } catch (IOException|Asn1Exception e) { + } catch (IOException e) { + sb.append("\t <Unparseable PA-ETYPE-INFO>\n"); + } catch (Asn1Exception e) { sb.append("\t <Unparseable PA-ETYPE-INFO>\n"); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SecureRandom.java openjdk-boot/jdk/src/share/classes/sun/security/provider/SecureRandom.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SecureRandom.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SecureRandom.java 2015-09-08 09:48:23.160974446 +0100 @@ -100,7 +100,15 @@ * performance overhead. */ digest = MessageDigest.getInstance("SHA", "SUN"); - } catch (NoSuchProviderException | NoSuchAlgorithmException e) { + } catch (NoSuchProviderException e) { + // Fallback to any available. + try { + digest = MessageDigest.getInstance("SHA"); + } catch (NoSuchAlgorithmException exc) { + throw new InternalError( + "internal error: SHA-1 not available."); + } + } catch (NoSuchAlgorithmException e) { // Fallback to any available. try { digest = MessageDigest.getInstance("SHA"); @@ -274,7 +282,15 @@ * performance overhead. */ digest = MessageDigest.getInstance("SHA", "SUN"); - } catch (NoSuchProviderException | NoSuchAlgorithmException e) { + } catch (NoSuchProviderException e) { + // Fallback to any available. + try { + digest = MessageDigest.getInstance("SHA"); + } catch (NoSuchAlgorithmException exc) { + throw new InternalError( + "internal error: SHA-1 not available."); + } + } catch (NoSuchAlgorithmException e) { // Fallback to any available. try { digest = MessageDigest.getInstance("SHA"); diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java 2015-09-08 11:53:31.962469733 +0100 @@ -118,7 +118,10 @@ ECPublicKeySpec spec = new ECPublicKeySpec(point, params); PublicKey peerPublicKey = kf.generatePublic(spec); return getAgreedSecret(peerPublicKey); - } catch (GeneralSecurityException | java.io.IOException e) { + } catch (GeneralSecurityException e) { + throw (SSLHandshakeException) new SSLHandshakeException( + "Could not generate secret").initCause(e); + } catch (java.io.IOException e) { throw (SSLHandshakeException) new SSLHandshakeException( "Could not generate secret").initCause(e); } @@ -144,7 +147,10 @@ throw new SSLHandshakeException( "ECPublicKey does not comply to algorithm constraints"); } - } catch (GeneralSecurityException | java.io.IOException e) { + } catch (GeneralSecurityException e) { + throw (SSLHandshakeException) new SSLHandshakeException( + "Could not generate ECPublicKey").initCause(e); + } catch (java.io.IOException e) { throw (SSLHandshakeException) new SSLHandshakeException( "Could not generate ECPublicKey").initCause(e); } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java 2015-09-08 09:48:23.160974446 +0100 @@ -1096,8 +1096,7 @@ KeyGenerator kg = JsseJce.getKeyGenerator(masterAlg); kg.init(spec); return kg.generateKey(); - } catch (InvalidAlgorithmParameterException | - NoSuchAlgorithmException iae) { + } catch (InvalidAlgorithmParameterException iae) { // unlikely to happen, otherwise, must be a provider exception // // For RSA premaster secrets, do not signal a protocol error @@ -1105,6 +1104,12 @@ if (debug != null && Debug.isOn("handshake")) { System.out.println("RSA master secret generation error:"); iae.printStackTrace(System.out); + } + throw new ProviderException(iae); + } catch (NoSuchAlgorithmException iae) { + if (debug != null && Debug.isOn("handshake")) { + System.out.println("RSA master secret generation error:"); + iae.printStackTrace(System.out); } throw new ProviderException(iae); } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2015-09-08 09:48:23.160974446 +0100 @@ -65,7 +65,10 @@ throw new RuntimeException("Duplicate untrusted certificate: " + cert.getSubjectX500Principal()); } - } catch (CertificateException | IOException e) { + } catch (CertificateException e) { + throw new RuntimeException( + "Incorrect untrusted certificate: " + alias, e); + } catch (IOException e) { throw new RuntimeException( "Incorrect untrusted certificate: " + alias, e); } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/text/bidi/BidiBase.java openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java --- openjdk-boot.orig/jdk/src/share/classes/sun/text/bidi/BidiBase.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java 2015-09-08 09:48:23.160974446 +0100 @@ -3478,7 +3478,9 @@ try { Field f = clazz.getField(name); return f.get(null); - } catch (NoSuchFieldException | IllegalAccessException x) { + } catch (NoSuchFieldException x) { + throw new AssertionError(x); + } catch (IllegalAccessException x) { throw new AssertionError(x); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java --- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java 2015-09-08 09:48:23.160974446 +0100 @@ -94,7 +94,7 @@ && mainClass.indexOf(arg.getProcessSubstring()) != -1) { pids.add(vmd.id()); } - } catch (MonitorException|URISyntaxException e) { + } catch (MonitorException e) { if (e.getMessage() != null) { System.err.println(e.getMessage()); } else { @@ -105,7 +105,18 @@ e.printStackTrace(); } } - } + } catch (URISyntaxException e) { + if (e.getMessage() != null) { + System.err.println(e.getMessage()); + } else { + Throwable cause = e.getCause(); + if ((cause != null) && (cause.getMessage() != null)) { + System.err.println(cause.getMessage()); + } else { + e.printStackTrace(); + } + } + } } if (pids.isEmpty()) { System.err.println("Could not find any processes matching : '" @@ -191,9 +202,11 @@ try { String mainClass = getMainClass(vmd); return mainClass != null && mainClass.equals(JCmd.class.getName()); - } catch (URISyntaxException|MonitorException ex) { + } catch (URISyntaxException ex) { return false; - } + } catch (MonitorException ex) { + return false; + } } private static String getMainClass(VirtualMachineDescriptor vmd) diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jconsole/Resources.java openjdk-boot/jdk/src/share/classes/sun/tools/jconsole/Resources.java --- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jconsole/Resources.java 2015-07-31 14:21:55.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/tools/jconsole/Resources.java 2015-09-08 09:48:23.160974446 +0100 @@ -129,7 +129,9 @@ private static void setFieldValue(Field field, String value) { try { field.set(null, value); - } catch (IllegalArgumentException | IllegalAccessException e) { + } catch (IllegalArgumentException e) { + throw new Error("Unable to access or set message for field " + field.getName()); + } catch (IllegalAccessException e) { throw new Error("Unable to access or set message for field " + field.getName()); } } @@ -200,8 +202,16 @@ try { return KeyEvent.class.getDeclaredField("VK_" + c.toUpperCase()) .getInt(null); - } catch (IllegalArgumentException | IllegalAccessException - | NoSuchFieldException | SecurityException e) { + } catch (IllegalArgumentException e) { + // Missing VK is okay + return 0; + } catch (IllegalAccessException e) { + // Missing VK is okay + return 0; + } catch (NoSuchFieldException e) { + // Missing VK is okay + return 0; + } catch (SecurityException e) { // Missing VK is okay return 0; } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java 2016-09-21 20:40:40.276914774 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java 2016-09-21 20:41:14.560360126 +0100 @@ -421,7 +421,9 @@ hostName.toLowerCase(Locale.ENGLISH)+".")) { hostName = canonicalized; } - } catch (UnknownHostException | SecurityException e) { + } catch (UnknownHostException e) { + // not canonicalized or no permission to do so, use old + } catch (SecurityException e) { // not canonicalized or no permission to do so, use old } nameParts[1] = hostName.toLowerCase(Locale.ENGLISH); diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java --- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java 2016-09-23 15:15:03.191967011 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java 2016-09-23 15:22:20.332755375 +0100 @@ -862,7 +862,12 @@ m = MethodHandleNatives.resolve(m, lookupClass); m.checkForTypeAlias(m.getDeclaringClass()); m.resolution = null; - } catch (ClassNotFoundException | LinkageError ex) { + } catch (ClassNotFoundException ex) { + // JVM reports that the "bytecode behavior" would get an error + assert(!m.isResolved()); + m.resolution = ex; + return m; + } catch (LinkageError ex) { // JVM reports that the "bytecode behavior" would get an error assert(!m.isResolved()); m.resolution = ex; diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java openjdk-boot/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java --- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java 2016-09-23 15:15:03.199966880 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java 2016-09-23 15:22:46.000332273 +0100 @@ -222,7 +222,9 @@ public Class<?> run() { try { return Class.forName(name, false, refcLoader); - } catch (ClassNotFoundException | LinkageError e) { + } catch (ClassNotFoundException e) { + return null; // Assume the class is not found + } catch (LinkageError e) { return null; // Assume the class is not found } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java openjdk-boot/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java --- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java 2016-09-23 16:23:05.180335751 +0100 +++ openjdk-boot/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java 2016-09-23 16:27:25.492014703 +0100 @@ -249,9 +249,13 @@ try { encoded = cipher.doFinal(encryptedData); checkPKCS8Encoding(encoded); - } catch (GeneralSecurityException | - IOException | - IllegalStateException ex) { + } catch (GeneralSecurityException ex) { + throw new InvalidKeySpecException( + "Cannot retrieve the PKCS8EncodedKeySpec", ex); + } catch (IOException ex) { + throw new InvalidKeySpecException( + "Cannot retrieve the PKCS8EncodedKeySpec", ex); + } catch (IllegalStateException ex) { throw new InvalidKeySpecException( "Cannot retrieve the PKCS8EncodedKeySpec", ex); } @@ -276,7 +280,10 @@ } catch (NoSuchAlgorithmException nsae) { // rethrow throw nsae; - } catch (GeneralSecurityException | IOException ex) { + } catch (GeneralSecurityException ex) { + throw new InvalidKeyException( + "Cannot retrieve the PKCS8EncodedKeySpec", ex); + } catch (IOException ex) { throw new InvalidKeyException( "Cannot retrieve the PKCS8EncodedKeySpec", ex); } diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/SealedObject.java openjdk-boot/jdk/src/share/classes/javax/crypto/SealedObject.java --- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/SealedObject.java 2016-09-23 16:23:05.192335551 +0100 +++ openjdk-boot/jdk/src/share/classes/javax/crypto/SealedObject.java 2016-09-23 16:24:51.118576883 +0100 @@ -353,7 +353,9 @@ try { return unseal(key, provider); - } catch (IllegalBlockSizeException | BadPaddingException ex) { + } catch (IllegalBlockSizeException ex) { + throw new InvalidKeyException(ex.getMessage()); + } catch (BadPaddingException ex) { throw new InvalidKeyException(ex.getMessage()); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java 2016-09-23 17:07:13.421018536 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java 2016-09-23 17:07:55.180339579 +0100 @@ -307,7 +307,12 @@ factory.generateCertificates(in); } return getMatchingCerts(certs, selector); - } catch (IOException | CertificateException e) { + } catch (IOException e) { + if (debug != null) { + debug.println("Exception fetching certificates:"); + e.printStackTrace(); + } + } catch (CertificateException e) { if (debug != null) { debug.println("Exception fetching certificates:"); e.printStackTrace(); @@ -414,7 +419,12 @@ crl = (X509CRL) factory.generateCRL(in); } return getMatchingCRLs(crl, selector); - } catch (IOException | CRLException e) { + } catch (IOException e) { + if (debug != null) { + debug.println("Exception fetching CRL:"); + e.printStackTrace(); + } + } catch (CRLException e) { if (debug != null) { debug.println("Exception fetching CRL:"); e.printStackTrace(); diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java 2016-09-23 17:07:13.457017951 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java 2016-09-23 17:15:54.756537449 +0100 @@ -173,8 +173,14 @@ clientVersion, serverVersion, encodedSecret), generator); return kg.generateKey(); - } catch (InvalidAlgorithmParameterException | - NoSuchAlgorithmException iae) { + } catch (InvalidAlgorithmParameterException iae) { + // unlikely to happen, otherwise, must be a provider exception + if (debug != null && Debug.isOn("handshake")) { + System.out.println("RSA premaster secret generation error:"); + iae.printStackTrace(System.out); + } + throw new RuntimeException("Could not generate premaster secret", iae); + } catch (NoSuchAlgorithmException iae) { // unlikely to happen, otherwise, must be a provider exception if (debug != null && Debug.isOn("handshake")) { System.out.println("RSA premaster secret generation error:"); diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java 2016-09-23 18:04:55.125088351 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java 2016-09-23 18:10:03.312134476 +0100 @@ -325,7 +325,9 @@ // did not find anything return null; - } catch (PKCS11Exception | KeyStoreException e) { + } catch (PKCS11Exception e) { + throw new ProviderException(e); + } catch (KeyStoreException e) { throw new ProviderException(e); } finally { token.releaseSession(session); @@ -450,7 +452,9 @@ } else if (key instanceof SecretKey) { entry = new KeyStore.SecretKeyEntry((SecretKey)key); } - } catch (NullPointerException | IllegalArgumentException e) { + } catch (NullPointerException e) { + throw new KeyStoreException(e); + } catch (IllegalArgumentException e) { throw new KeyStoreException(e); } engineSetEntry(alias, entry, new KeyStore.PasswordProtection(password)); @@ -556,7 +560,9 @@ } else { throw new KeyStoreException("unexpected entry type"); } - } catch (PKCS11Exception | CertificateException e) { + } catch (PKCS11Exception e) { + throw new KeyStoreException(e); + } catch (CertificateException e) { throw new KeyStoreException(e); } } @@ -758,7 +764,11 @@ if (debug != null) { dumpTokenMap(); } - } catch (LoginException | KeyStoreException | PKCS11Exception e) { + } catch (LoginException e) { + throw new IOException("load failed", e); + } catch (KeyStoreException e) { + throw new IOException("load failed", e); + } catch (PKCS11Exception e) { throw new IOException("load failed", e); } } @@ -838,7 +848,11 @@ if (debug != null) { dumpTokenMap(); } - } catch (LoginException | KeyStoreException | PKCS11Exception e) { + } catch (LoginException e) { + throw new IOException("load failed", e); + } catch (KeyStoreException e) { + throw new IOException("load failed", e); + } catch (PKCS11Exception e) { throw new IOException("load failed", e); } } @@ -1028,7 +1042,9 @@ storeCert(alias, xcert); module.setTrust(token, xcert); mapLabels(); - } catch (PKCS11Exception | CertificateException e) { + } catch (PKCS11Exception e) { + throw new KeyStoreException(e); + } catch (CertificateException e) { throw new KeyStoreException(e); } @@ -1090,7 +1106,9 @@ storePkey(alias, (KeyStore.PrivateKeyEntry)entry); } - } catch (PKCS11Exception | CertificateException pe) { + } catch (PKCS11Exception pe) { + throw new KeyStoreException(pe); + } catch (CertificateException pe) { throw new KeyStoreException(pe); } @@ -1128,7 +1146,9 @@ if (debug != null) { dumpTokenMap(); } - } catch (PKCS11Exception | CertificateException pe) { + } catch (PKCS11Exception pe) { + throw new KeyStoreException(pe); + } catch (CertificateException pe) { throw new KeyStoreException(pe); } } diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java --- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java 2016-09-23 18:04:55.137088159 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java 2016-09-23 18:06:53.927179034 +0100 @@ -130,7 +130,10 @@ rs.getModulus(), rs.getPublicExponent() ); - } catch (PKCS11Exception | InvalidKeyException e) { + } catch (PKCS11Exception e) { + throw new InvalidKeySpecException + ("Could not create RSA public key", e); + } catch (InvalidKeyException e) { throw new InvalidKeySpecException ("Could not create RSA public key", e); } @@ -174,7 +177,10 @@ throw new InvalidKeySpecException("Only RSAPrivate(Crt)KeySpec " + "and PKCS8EncodedKeySpec supported for RSA private keys"); } - } catch (PKCS11Exception | InvalidKeyException e) { + } catch (PKCS11Exception e) { + throw new InvalidKeySpecException + ("Could not create RSA private key", e); + } catch (InvalidKeyException e) { throw new InvalidKeySpecException ("Could not create RSA private key", e); } --- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java 2016-09-23 18:24:05.646575464 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java 2016-09-23 18:24:20.022343797 +0100 @@ -2538,7 +2538,9 @@ X509Certificate cert = null; try { cert = (X509Certificate)cf.generateCertificate(in); - } catch (ClassCastException | CertificateException ce) { + } catch (ClassCastException ce) { + throw new Exception(rb.getString("Input.not.an.X.509.certificate")); + } catch (CertificateException ce) { throw new Exception(rb.getString("Input.not.an.X.509.certificate")); }