From b3c938cde1a1f15df5174357785909b82c2ed7e4 Mon Sep 17 00:00:00 2001 From: opencode Date: Sun, 5 Jul 2026 14:49:43 +0000 Subject: [PATCH] fix(#7): validate parameter ranges at startup --- src/main.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/main.rs b/src/main.rs index eb6d1eb..d615c1b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -112,9 +112,51 @@ struct Args { tint: i32, } +/// Validate that all adjustment parameters are within their documented ranges. +fn validate_params(args: &Args) -> Result<(), Box> { + if args.exposure < -2.0 || args.exposure > 2.0 { + return Err("--exposure must be between -2.0 and 2.0".into()); + } + let range = -100i32..=100i32; + if !range.contains(&args.contrast) { + return Err("--contrast must be between -100 and 100".into()); + } + if !range.contains(&args.highlights) { + return Err("--highlights must be between -100 and 100".into()); + } + if !range.contains(&args.shadows) { + return Err("--shadows must be between -100 and 100".into()); + } + if !range.contains(&args.whites) { + return Err("--whites must be between -100 and 100".into()); + } + if !range.contains(&args.blacks) { + return Err("--blacks must be between -100 and 100".into()); + } + if !range.contains(&args.clarity) { + return Err("--clarity must be between -100 and 100".into()); + } + if !range.contains(&args.vibrance) { + return Err("--vibrance must be between -100 and 100".into()); + } + if !range.contains(&args.saturation) { + return Err("--saturation must be between -100 and 100".into()); + } + if !range.contains(&args.temperature) { + return Err("--temperature must be between -100 and 100".into()); + } + if !range.contains(&args.tint) { + return Err("--tint must be between -100 and 100".into()); + } + Ok(()) +} + fn main() -> Result<(), Box> { let args = Args::parse(); + // Validate parameter ranges before processing + validate_params(&args)?; + println!("Photo Editor v0.1"); println!("=================="); println!("Input file: {}", args.input);