You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2010/12/21 15:30:19 UTC

svn commit: r1051507 - in /incubator/aries/trunk/application: application-modeller/src/main/java/org/apache/aries/application/modelling/impl/ application-utils/src/main/java/org/apache/aries/application/utils/filesystem/impl/

Author: mnuttall
Date: Tue Dec 21 14:30:19 2010
New Revision: 1051507

URL: http://svn.apache.org/viewvc?rev=1051507&view=rev
Log:
ARIES-521: Unsafe File construction in ModelledResourceManagerImpl.findBlueprints()

Modified:
    incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/impl/ModelledResourceManagerImpl.java
    incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/filesystem/impl/ZipDirectory.java

Modified: incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/impl/ModelledResourceManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/impl/ModelledResourceManagerImpl.java?rev=1051507&r1=1051506&r2=1051507&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/impl/ModelledResourceManagerImpl.java (original)
+++ incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/impl/ModelledResourceManagerImpl.java Tue Dec 21 14:30:19 2010
@@ -30,14 +30,11 @@ import java.net.URL;
 import java.net.URLConnection;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.jar.Attributes;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
 
 import org.apache.aries.application.InvalidAttributeException;
 import org.apache.aries.application.filesystem.IDirectory;
@@ -155,7 +152,7 @@ public class ModelledResourceManagerImpl
    * @throws OpenFailureException
    */
   private Collection<IFile> findBlueprints (IDirectory oneBundle) 
-  throws  IOException
+  throws  IOException, URISyntaxException
   {
     _logger.debug(LOG_ENTRY, "findBlueprints", oneBundle);
     Set<IDirectory> archiveSet = new HashSet<IDirectory>();
@@ -176,14 +173,13 @@ public class ModelledResourceManagerImpl
    * @throws OpenFailureException
    */
   private Collection<IFile> findBlueprints(Collection<IDirectory> applicationBundles)
-  throws IOException
+  throws IOException, URISyntaxException
   {
     _logger.debug(LOG_ENTRY, "findBlueprints", applicationBundles);
     Collection<IFile> blueprints = new ArrayList<IFile>();
     for (IDirectory appBundle : applicationBundles) {
       if (appBundle != null) {
-        File bundleFile = new File(appBundle.toString());
-        BundleManifest bundleMf = BundleManifest.fromBundle(bundleFile);
+        BundleManifest bundleMf = BundleManifest.fromBundle(appBundle);
         BundleBlueprintParser bpParser = new BundleBlueprintParser(bundleMf);
         List<IFile> files = appBundle.listAllFiles();
         Iterator<IFile> it = files.iterator();

Modified: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/filesystem/impl/ZipDirectory.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/filesystem/impl/ZipDirectory.java?rev=1051507&r1=1051506&r2=1051507&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/filesystem/impl/ZipDirectory.java (original)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/filesystem/impl/ZipDirectory.java Tue Dec 21 14:30:19 2010
@@ -100,12 +100,17 @@ public class ZipDirectory extends ZipFil
     StringBuilder baseBuilderCrapThingToGetRoundFindBugs = new StringBuilder(getName());
     
     if (!!!isRoot()) baseBuilderCrapThingToGetRoundFindBugs.append('/');
-    
-    if (paths != null && paths.length > 1) {
+    // Build 'result' as a chain of ZipDirectories. This will only work if java.util.ZipFile recognises every 
+    // directory in the chain as being a ZipEntry in its own right. 
+    outer: if (paths != null && paths.length > 1) {
       for (int i = 0; i < paths.length - 1; i++) {
         String path = paths[i];
         baseBuilderCrapThingToGetRoundFindBugs.append(path);
         ZipEntry dirEntry = getEntry(baseBuilderCrapThingToGetRoundFindBugs.toString());
+        if (dirEntry == null) { 
+          result = this;
+          break outer;
+        }
         result = new ZipDirectory(zip, dirEntry, result);
         baseBuilderCrapThingToGetRoundFindBugs.append('/');
       }