From 6407b5452bf8753c252ca77d64b444bed8d66d05 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sun, 4 Jul 2021 13:39:00 +0100 Subject: [PATCH] Delete our copies of data if any exception is thrown. --- .../api/resource/ArbitraryResource.java | 23 ++++++++++++------- .../qortal/api/resource/WebsiteResource.java | 2 ++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/qortal/api/resource/ArbitraryResource.java b/src/main/java/org/qortal/api/resource/ArbitraryResource.java index 920cc6e1..63d590f3 100644 --- a/src/main/java/org/qortal/api/resource/ArbitraryResource.java +++ b/src/main/java/org/qortal/api/resource/ArbitraryResource.java @@ -257,16 +257,20 @@ public class ArbitraryResource { if (Settings.getInstance().isApiRestricted()) throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.NON_PRODUCTION); + // Check if a file or directory has been supplied + File file = new File(path); + if (!file.isFile()) { + LOGGER.info("Not a file: {}", path); + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_CRITERIA); + } + + DataFile dataFile = new DataFile(path); + if (dataFile == null) { + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_DATA); + } + try (final Repository repository = RepositoryManager.getRepository()) { - // Check if a file or directory has been supplied - File file = new File(path); - if (!file.isFile()) { - LOGGER.info("Not a file: {}", path); - throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_CRITERIA); - } - - DataFile dataFile = new DataFile(path); DataFile.ValidationResult validationResult = dataFile.isValid(); if (validationResult != DataFile.ValidationResult.OK) { LOGGER.error("Invalid file: {}", validationResult); @@ -319,11 +323,14 @@ public class ArbitraryResource { return Base58.encode(bytes); } catch (DataException e) { + dataFile.deleteAll(); LOGGER.error("Repository issue when uploading data", e); throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.REPOSITORY_ISSUE, e); } catch (TransformationException e) { + dataFile.deleteAll(); throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.TRANSFORMATION_ERROR, e); } catch (IllegalStateException e) { + dataFile.deleteAll(); LOGGER.error("Invalid upload data", e); throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_DATA, e); } diff --git a/src/main/java/org/qortal/api/resource/WebsiteResource.java b/src/main/java/org/qortal/api/resource/WebsiteResource.java index 21b3c4e8..59c56137 100644 --- a/src/main/java/org/qortal/api/resource/WebsiteResource.java +++ b/src/main/java/org/qortal/api/resource/WebsiteResource.java @@ -139,8 +139,10 @@ public class WebsiteResource { return Base58.encode(bytes); } catch (TransformationException e) { + dataFile.deleteAll(); throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.TRANSFORMATION_ERROR, e); } catch (DataException e) { + dataFile.deleteAll(); throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.REPOSITORY_ISSUE, e); } }