Fix TOCTOU issue when getting blob during removal

Fixes gaul/s3proxy#318.
This commit is contained in:
Andrew Gaul 2019-11-09 11:25:24 +09:00
parent ec0ef7c9ff
commit 05573fa108
1 changed files with 3 additions and 3 deletions

View File

@ -632,14 +632,14 @@ public final class LocalBlobStore implements BlobStore {
logger.debug("Container %s does not exist", containerName); logger.debug("Container %s does not exist", containerName);
throw cnfe(containerName); throw cnfe(containerName);
} }
// If the blob doesn't exist, a null object is returned // If the blob doesn't exist, a null object is returned
if (!storageStrategy.blobExists(containerName, key)) { Blob blob = loadBlob(containerName, key);
if (blob == null) {
logger.debug("Item %s does not exist in container %s", key, containerName); logger.debug("Item %s does not exist in container %s", key, containerName);
return null; return null;
} }
Blob blob = loadBlob(containerName, key);
if (options != null) { if (options != null) {
String eTag = blob.getMetadata().getETag(); String eTag = blob.getMetadata().getETag();
if (eTag != null) { if (eTag != null) {