diff options
Diffstat (limited to 'java/openjdk6/files/icedtea/security/7195919.patch')
| -rw-r--r-- | java/openjdk6/files/icedtea/security/7195919.patch | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/java/openjdk6/files/icedtea/security/7195919.patch b/java/openjdk6/files/icedtea/security/7195919.patch deleted file mode 100644 index 2d14c00701b8..000000000000 --- a/java/openjdk6/files/icedtea/security/7195919.patch +++ /dev/null @@ -1,63 +0,0 @@ -# HG changeset patch -# User dmeetry -# Date 1347313661 -14400 -# Node ID 5352a40bb0ff7e8a6e826478d7687fff695d9805 -# Parent 074f132d65c91231ca989e4c757207e1cf25a476 -7195919: (sl) ServiceLoader can throw CCE without needing to create instance -Reviewed-by: smarks - -diff --git a/src/share/classes/java/util/ServiceLoader.java b/src/share/classes/java/util/ServiceLoader.java ---- jdk/src/share/classes/java/util/ServiceLoader.java -+++ jdk/src/share/classes/java/util/ServiceLoader.java -@@ -358,14 +358,21 @@ - } - String cn = nextName; - nextName = null; -+ Class<?> c = null; - try { -- S p = service.cast(Class.forName(cn, true, loader) -- .newInstance()); -- providers.put(cn, p); -- return p; -+ c = Class.forName(cn, false, loader); - } catch (ClassNotFoundException x) { - fail(service, - "Provider " + cn + " not found"); -+ } -+ if (!service.isAssignableFrom(c)) { -+ fail(service, -+ "Provider " + cn + " not a subtype"); -+ } -+ try { -+ S p = service.cast(c.newInstance()); -+ providers.put(cn, p); -+ return p; - } catch (Throwable x) { - fail(service, - "Provider " + cn + " could not be instantiated: " + x, -diff --git a/src/share/classes/sun/misc/Service.java b/src/share/classes/sun/misc/Service.java ---- jdk/src/share/classes/sun/misc/Service.java -+++ jdk/src/share/classes/sun/misc/Service.java -@@ -284,12 +284,20 @@ - } - String cn = nextName; - nextName = null; -+ Class<?> c = null; - try { -- return Class.forName(cn, true, loader).newInstance(); -+ c = Class.forName(cn, false, loader); - } catch (ClassNotFoundException x) { - fail(service, - "Provider " + cn + " not found"); -- } catch (Exception x) { -+ } -+ if (!service.isAssignableFrom(c)) { -+ fail(service, -+ "Provider " + cn + " not a subtype"); -+ } -+ try { -+ return service.cast(c.newInstance()); -+ } catch (Throwable x) { - fail(service, - "Provider " + cn + " could not be instantiated: " + x, - x); |
