From eba477358f272e99caf6d3cf99ca345f38eab037 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Wed, 26 Aug 2026 08:19:04 +0200 Subject: {run,read}rom: validate the path from --nasm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- crates/readrom/src/main.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'crates/readrom/src/main.rs') diff --git a/crates/readrom/src/main.rs b/crates/readrom/src/main.rs index 8d70e16..f461fe9 100644 --- a/crates/readrom/src/main.rs +++ b/crates/readrom/src/main.rs @@ -16,7 +16,7 @@ struct Args { all: bool, disassemble: Option, mapping: Option, - nasm: Option, + nasm: Option, raw: bool, config: Option, } @@ -75,7 +75,16 @@ fn parse_arguments() -> Args { } }, "-n" | "--nasm" => match args.next() { - Some(a) => res.nasm = Some(a), + Some(a) => { + let pb = PathBuf::from(a.clone()); + if !pb.exists() { + die(format!("directory '{a}' does not exist")); + } + if !pb.is_dir() { + die(format!("path '{a}' does not point to a directory")); + } + res.nasm = Some(pb); + } None => die("you need to specify a file for the '-n/--nasm' flag".to_string()), }, "-r" | "--raw" => res.raw = true, @@ -336,7 +345,7 @@ fn parse_hex_value(address: &str) -> Option { fn do_disassemble( bytes: &[u8], address: Option<&str>, - nasm_path: &Option, + nasm_path: &Option, mut start: Option, mut end: Option, raw: bool, @@ -347,7 +356,7 @@ fn do_disassemble( // Fill up the 'addresses' and the 'memories' maps. if let Some(path) = nasm_path { - if let Ok(file) = File::open(PathBuf::from(path).join("addresses.txt")) { + if let Ok(file) = File::open(path.join("addresses.txt")) { let reader = BufReader::new(file); for line in reader.lines() { let line = line.map_err(|e| e.to_string())?; -- cgit v1.2.3