view patches/boot/ecj-multicatch.patch @ 2750:121ad7411fd1

Bump to icedtea-2.5.3. 2014-10-14 Andrew John Hughes <gnu.andrew@member.fsf.org> * patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch, * patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch, * patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch, * patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch, * patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch, * patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch, * patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch, * patches/hotspot/aarch64/20140715-8043454-8037157_test_case_fix.patch: Remove patches included in latest AArch64 drop. * Makefile.am: (CORBA_CHANGESET): Update to icedtea-2.5.3 tag. (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. (ICEDTEA_PATCHES): Remove old AArch64 security patches and add new ones from the 2014/10/14 update. * NEWS: List changes from u71 and AArch64 port. Set release date to today. * configure.ac: Bump to 2.5.3. * hotspot.map.in: Update to icedtea-2.5.3 tag for default. Update AArch64 to jdk7u60_b04_aarch64_834 tag. * patches/boot/ecj-multicatch.patch: Remove defunct RSAClientKeyExchange patch. Add new cases in CipherInputStream and CipherOutputStream. * patches/boot/ecj-stringswitch.patch: Add new case in AnnotationInvocationHandler. * patches/hotspot/aarch64/20141014-8015256-better_class_accessibility.patch, * patches/hotspot/aarch64/20141014-8036533-method_for_correct_defaults.patch, * patches/hotspot/aarch64/20141014-8036805-correct_linker_method_lookup.patch, * patches/hotspot/aarch64/20141014-8038898-safer_safepoints.patch, * patches/hotspot/aarch64/20141014-8038903-more_native_monitor_monitoring.patch, * patches/hotspot/aarch64/20141014-8041717-issue_with_class_file_parser.patch, * patches/hotspot/aarch64/20141014-8042603-safepointpolloffset.patch, * patches/hotspot/aarch64/20141014-8044269-analysis_of_archive_files.patch, * patches/hotspot/aarch64/20141014-8046213-testemptybootstrapmethodsattr_failure.patch, * patches/hotspot/aarch64/20141014-8050485-super_causes_verifyerror.patch: OpenJDK 8 version of 2014/10/14 HotSpot security patches for AArch64.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Tue, 14 Oct 2014 22:11:50 +0100
parents 8a3e31a0cd56
children 5078409f15b9
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;
         }