changeset 800:ae5d6515b833 default tip

Fixed download service * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: (fillInPartJars) for-each loop replaced by indexed loop to prevent ConcurrentModificationException
author Jiri Vanek <jvanek@redhat.com>
date Mon, 20 Jul 2015 13:01:11 +0200
parents 050347a87858
children
files ChangeLog NEWS netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
diffstat 3 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Mar 03 09:46:35 2015 -0500
+++ b/ChangeLog	Mon Jul 20 13:01:11 2015 +0200
@@ -1,3 +1,9 @@
+2015-07-20  Jiri Vanek  <jvanek@redhat.com>
+
+	Fixed download service
+	* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: (fillInPartJars)
+	for-each loop replaced by indexed loop to prevent ConcurrentModificationException
+
 2015-03-03  Jie Kang  <jkang@redhat.com>
 
 	Fix DeadLockTest reproducers
--- a/NEWS	Tue Mar 03 09:46:35 2015 -0500
+++ b/NEWS	Mon Jul 20 13:01:11 2015 +0200
@@ -9,6 +9,7 @@
 CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
 
 New in release 1.4.3 (YYYY-MM-DD):
+* fixed DownloadService
 
 New in release 1.4.2 (2014-02-05):
 * Dialogs center on screen before becoming visible
--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Tue Mar 03 09:46:35 2015 -0500
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Mon Jul 20 13:01:11 2015 +0200
@@ -1225,8 +1225,9 @@
      * in the same part).
      */
     protected void fillInPartJars(List<JARDesc> jars) {
-        for (JARDesc desc : jars) {
-            String part = desc.getPart();
+        //can not use iterator, will rise ConcurrentModificationException on jars.add(jar);
+        for (int x = 0 ; x< jars.size() ; x++) {
+            String part = jars.get(x).getPart();
             // "available" field can be affected by two different threads
             // working in loadClass(String)
             synchronized (available) {