From e142bc0be3f987e1ba13116baee8466078786349 Mon Sep 17 00:00:00 2001 From: ThomasFok Date: Sat, 28 Jan 2023 20:19:24 +0000 Subject: [PATCH] Import command - validate address and auxtype options --- .../acx/command/ImportCommand.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/app/cli-acx/src/main/java/io/github/applecommander/acx/command/ImportCommand.java b/app/cli-acx/src/main/java/io/github/applecommander/acx/command/ImportCommand.java index 75efa07..5f4114d 100644 --- a/app/cli-acx/src/main/java/io/github/applecommander/acx/command/ImportCommand.java +++ b/app/cli-acx/src/main/java/io/github/applecommander/acx/command/ImportCommand.java @@ -86,6 +86,25 @@ public class ImportCommand extends ReadWriteDiskCommandOptions { @Override public int handleCommand() throws Exception { + final int MAX_ADDRESS = 0xFFFF; + final int MAX_AUXTYPE = 0xFFFF; + + if (overrides.fileAddress.isPresent()){ + final int fileAddress = overrides.fileAddress.get(); + if (fileAddress < 0 || fileAddress > MAX_ADDRESS) { + String errormsg = String.format("address(%d) is out of range(0-%d).", fileAddress, MAX_ADDRESS); + throw new IllegalArgumentException(errormsg); + } + } + + if (overrides.auxType.isPresent()){ + final int auxType = overrides.auxType.get(); + if (auxType < 0 || auxType > MAX_AUXTYPE) { + String errormsg = String.format("auxiliary type(%d) is out of range(0-%d).", auxType, MAX_AUXTYPE); + throw new IllegalArgumentException(errormsg); + } + } + DirectoryEntry directory = disk.getFormattedDisks()[0]; if (directoryName.isPresent()) { String[] dirs = directoryName.get().split("/"); @@ -350,7 +369,8 @@ public class ImportCommand extends ReadWriteDiskCommandOptions { private Optional fileName; @Option(names = { "--aux", "--auxtype" }, description = "Aux. Type. " - + "(For a filesystem that supports aux type.)") + + "(For a filesystem that supports aux type.)", + converter = IntegerTypeConverter.class) private Optional auxType; } }