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('/');
}