From 51655eab0c6bfa590e38abe4797be96acfc6d2e1 Mon Sep 17 00:00:00 2001 From: NetterSilver <133535268+Silvertree2010@users.noreply.github.com> Date: Mon, 9 Nov 2026 03:10:10 +0100 Subject: [PATCH] Reject '+' sign in print page ranges (#4931) --- crates/print/src/range.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/print/src/range.rs b/crates/print/src/range.rs index fffab083af..027158df01 100644 --- a/crates/print/src/range.rs +++ b/crates/print/src/range.rs @@ -51,6 +51,10 @@ fn page_of(tok: &str, count: usize, labels: &Labels) -> Result() { Ok(n) if n >= 1 && n <= count => Ok(n - 1), Ok(n) => Err(PrintError::OutOfRange(n, count)), @@ -176,6 +180,13 @@ mod tests { assert!(select_pages(0, Some("-"), &[], Subset::All, false).is_err()); } + #[test] + fn plus_sign_is_not_a_page() { + for r in ["+3", "+2-4", "2-+4"] { + assert!(matches!(select_pages(5, Some(r), &[], Subset::All, false), Err(PrintError::NotAPage(_))), "accepted {r}"); + } + } + #[test] fn open_ended_range_covers_all_pages() { assert_eq!(select_pages(5, Some("-"), &[], Subset::All, false).unwrap(), vec![0, 1, 2, 3, 4]);