Mercurial > hg > release > icedtea7-2.5
view patches/boot/ecj-multicatch.patch @ 2775:5078409f15b9 icedtea-2.5.5pre01
Bump to icedtea-2.5.5pre01.
Upstream changes:
- S7142035: assert in j.l.instrument agents during shutdown when daemon thread is running
- S7160837: DigestOutputStream does not turn off digest calculation when "close()" is called
- S7195480: javax.smartcardio does not detect cards on Mac OS X
- S8001472: api/java_awt/Window/indexTGF_* tests fail because expected colors aren't equal
- S8011646: SEGV in compiled code with loop predication
- S8012637: Adjust CipherInputStream class to work in AEAD/GCM mode
- S8016545: java.beans.XMLEncoder.writeObject output is wrong
- S8019324: assert(_f2 == 0 || _f2 == f2) failed: illegal field change
- S8019623: Lack of synchronization in AppContext.getAppContext()
- S8021804: Certpath validation fails if validity period of root cert does not include validity period of intermediate cert
- S8022070: Compilation error in stubGenerator_sparc.cpp with some compilers
- S8024061: Exception thrown when drag and drop between two components is executed quickly
- S8028616: Htmleditorkit parser doesn't handle leading slash (/)
- S8028617: Dvorak keyboard mapping not honored when ctrl key pressed
- S8029837: NPE seen in XMLDocumentFragmentScannerImpl.setProperty since 7u40b33
- S8031290: Adjust call to getisax() for additional words returned
- S8032872: [macosx] Cannot select from JComboBox in a JWindow
- S8032874: ArrayIndexOutOfBoundsException in JTable while clearing data in JTable
- S8032878: Editable combos in table do not behave as expected
- S8033113: wsimport fails on WSDL:header parameter name customization
- S8033696: "assert(thread != NULL) failed: just checking" due to Thread::current() and JNI pthread interaction
- S8036022: D3D: rendering with XOR composite causes InternalError.
- S8036709: Java 7 jarsigner displays warning about cert policy tree
- S8036819: JAB: mneumonics not read for textboxes
- S8036983: JAB:Multiselection Ctrl+CursorUp/Down and ActivateDescenderPropertyChanged event
- S8037477: Reproducible hang of JAWS and webstart application with JAB 2.0.4
- S8038925: Java with G1 crashes in dump_instance_fields using jmap or jcmd without fullgc
- S8039050: Crash in C2 compiler at Node::rematerialize
- S8039298: assert(base == NULL || t_adr->isa_rawptr() || ! phase->type(base)->higher_equal(TypePtr::NULL_PTR))
- S8039319: (smartcardio) Card.transmitControlCommand() does not work on Mac OS X
- S8041451: com.sun.jndi.ldap.Connection:ReadTimeout should abandon ldap request
- S8042059: Various fixes to linux/sparc
- S8042857: 14 stuck threads waiting for notification on LDAPRequest
- S8043200: Decrease the preference mode of RC4 in the enabled cipher suite list
- S8043205: Incorrect system traps.h include path
- S8043206: Fix signed vs. unsigned comparison warning in copy_sparc.hpp
- S8043207: Add const to Address argument for Assembler::swap
- S8043210: Add _BIG_ENDIAN define on linux/sparc
- S8043507: javax.smartcardio.CardTerminals.list() fails on MacOSX
- S8044602: Increment minor version of HSx for 7u72 and initialize the build number
- S8044659: Java SecureRandom on SPARC T4 much slower than on x86/Linux
- S8046769: Set T family feature bit on Niagara systems
- S8048080: (smartcardio) javax.smartcardio.Card.openLogicalChannel() dosn't work on MacOSX
- S8049081: Increment hsx 24.72 build to b02 for 7u72-b03
- S8049542: C2: assert(size_in_words <= (julong)max_jint) failed: no overflow
- S8049787: Increment hsx 24.72 build to b03 for 7u72-b04
- S8050158: Introduce system property to maintain RC4 preference order
- S8050165: linux-sparcv9: NMT detail causes assert((intptr_t*)younger_sp[FP->sp_offset_in_saved_window()] == (intptr_t*)((intptr_t)sp - STACK_BIAS)) failed: younger_sp must be valid
- S8050167: linux-sparcv9: hs_err file does not show any stack information
- S8055714: Increment hsx 24.72 build to b04 for 7u72-b11
- S8056211: api/java_awt/Event/InputMethodEvent/serial/index.html#Input[serial2002] failure
- S8068405: GenerateCurrencyData throws RuntimeException for old data
2015-01-27 Andrew John Hughes <gnu.andrew@member.fsf.org>
* Makefile.am,
(BUILD_VERSION): Bump to b31.
(CORBA_CHANGESET): Update to icedtea-2.5.5pre01.
(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.
* NEWS: Updated.
* configure.ac: Bump to 2.5.5pre01.
* hotspot.map.in: Update to icedtea-2.5.5pre01.
* patches/boot/ecj-multicatch.patch:
Add new case for sun.security.provider.SecureRandom
author | Andrew John Hughes <gnu_andrew@member.fsf.org> |
---|---|
date | Tue, 27 Jan 2015 17:06:06 +0000 |
parents | 121ad7411fd1 |
children | 9e3486e15837 |
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 2014-05-12 22:18:02.000000000 +0100 +++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2014-10-14 19:21:56.737171023 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java 2014-10-14 19:21:56.729170913 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java 2014-10-14 19:21:56.729170913 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java 2014-10-14 19:21:56.729170913 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/LambdaForm.java 2014-10-14 19:21:56.729170913 +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 2014-10-14 19:21:18.664639686 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2014-10-14 19:21:56.729170913 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java 2014-10-14 19:21:56.729170913 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java 2014-10-14 19:21:56.737171023 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/nio/charset/Charset.java 2014-10-14 19:21:56.737171023 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java 2014-10-14 19:21:56.729170913 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/java/util/Scanner.java 2014-10-14 19:21:56.733170968 +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 2014-10-14 19:58:01.679349189 +0100 +++ openjdk-boot/jdk/src/share/classes/javax/crypto/CipherInputStream.java 2014-10-14 19:58:59.096156147 +0100 @@ -110,7 +110,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); } @@ -314,7 +317,14 @@ cipher.doFinal(); } } - catch (BadPaddingException | IllegalBlockSizeException ex) { + catch (BadPaddingException ex) { + /* If no data has been read from the stream to be en/decrypted, + we supress any exceptions, and close quietly. */ + if (read) { + throw new IOException(ex); + } + } + catch (IllegalBlockSizeException ex) { /* If no data has been read from the stream to be en/decrypted, we supress any exceptions, and close quietly. */ if (read) { 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 2014-10-14 19:57:56.383275536 +0100 +++ openjdk-boot/jdk/src/share/classes/javax/crypto/CipherOutputStream.java 2014-10-14 19:59:16.160397935 +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/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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java 2014-10-14 19:21:56.733170968 +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/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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java 2014-10-14 19:21:56.737171023 +0100 @@ -1061,8 +1061,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 @@ -1070,6 +1069,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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java 2014-10-14 19:21:56.733170968 +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 2014-10-02 03:17:19.000000000 +0100 +++ openjdk-boot/jdk/src/share/classes/sun/tools/jconsole/Resources.java 2014-10-14 19:21:56.733170968 +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/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-01-27 03:06:33.100525224 +0000 +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SecureRandom.java 2015-01-27 03:15:51.615360901 +0000 @@ -94,14 +94,22 @@ * and sets the seed, if given. */ private void init(byte[] seed) { + Exception ex = null; + try { /* * Use the local SUN implementation to avoid native * performance overhead. */ digest = MessageDigest.getInstance("SHA", "SUN"); - } catch (NoSuchProviderException | NoSuchAlgorithmException e) { - // Fallback to any available. + } catch (NoSuchProviderException e) { + ex = e; + } catch (NoSuchAlgorithmException e) { + ex = e; + } + + // Fallback to any available. + if (ex != null) { try { digest = MessageDigest.getInstance("SHA"); } catch (NoSuchAlgorithmException exc) { @@ -265,6 +273,7 @@ */ private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException { + Exception ex = null; s.defaultReadObject (); @@ -274,7 +283,13 @@ * performance overhead. */ digest = MessageDigest.getInstance("SHA", "SUN"); - } catch (NoSuchProviderException | NoSuchAlgorithmException e) { + } catch (NoSuchProviderException e) { + ex = e; + } catch (NoSuchAlgorithmException e) { + ex = e; + } + + if (ex != null) { // Fallback to any available. try { digest = MessageDigest.getInstance("SHA");