You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2016/07/12 05:03:29 UTC
jclouds git commit: JCLOUDS-1137: Handle TOCTOU during blobMetadata
Repository: jclouds
Updated Branches:
refs/heads/master 08e78c979 -> 4874a1eb1
JCLOUDS-1137: Handle TOCTOU during blobMetadata
A similar issue exists when getting a blob payload when a caller
simultaneously removes the blob.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/4874a1eb
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/4874a1eb
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/4874a1eb
Branch: refs/heads/master
Commit: 4874a1eb185870eef88731080ae8cf9ceebc3be2
Parents: 08e78c9
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Jul 11 21:51:52 2016 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Mon Jul 11 22:02:15 2016 -0700
----------------------------------------------------------------------
.../internal/FilesystemStorageStrategyImpl.java | 3 +++
.../org/jclouds/blobstore/config/LocalBlobStore.java | 13 ++++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/4874a1eb/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
index ff16954..3de142e 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
@@ -32,6 +32,7 @@ import static org.jclouds.filesystem.util.Utils.setPublic;
import static org.jclouds.util.Closeables2.closeQuietly;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
@@ -389,6 +390,8 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
.contentLength(byteSource.size())
.contentMD5(byteSource.hash(Hashing.md5()).asBytes());
}
+ } catch (FileNotFoundException fnfe) {
+ return null;
} catch (IOException e) {
throw Throwables.propagate(e);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/4874a1eb/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
index 65d39ba..631f182 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -245,18 +245,21 @@ public final class LocalBlobStore implements BlobStore {
return storageStrategy.blobExists(containerName, key);
}
});
- SortedSet<StorageMetadata> contents = newTreeSet(transform(blobBelongingToContainer,
- new Function<String, StorageMetadata>() {
+ SortedSet<StorageMetadata> contents = newTreeSet(FluentIterable.from(blobBelongingToContainer)
+ .transform(new Function<String, StorageMetadata>() {
+ @Override
public StorageMetadata apply(String key) {
Blob oldBlob = loadBlob(containerName, key);
- checkState(oldBlob != null, "blob " + key + " is not present although it was in the list of "
- + containerName);
+ if (oldBlob == null) {
+ return null;
+ }
checkState(oldBlob.getMetadata() != null, "blob " + containerName + "/" + key + " has no metadata");
MutableBlobMetadata md = BlobStoreUtils.copy(oldBlob.getMetadata());
md.setSize(oldBlob.getMetadata().getSize());
return md;
}
- }));
+ })
+ .filter(Predicates.<StorageMetadata>notNull()));
String marker = null;
if (options != null) {