From c8ad816d4167c86350961203358a889c8a08febe Mon Sep 17 00:00:00 2001 From: Devel Date: Thu, 11 Jun 2026 18:25:27 +0300 Subject: [PATCH 1/3] do checks for zero for --length and --pages --- src/uu/pr/src/pr.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/uu/pr/src/pr.rs b/src/uu/pr/src/pr.rs index 29acf48dfa..28a5fb5820 100644 --- a/src/uu/pr/src/pr.rs +++ b/src/uu/pr/src/pr.rs @@ -703,9 +703,17 @@ fn build_options( let invalid_pages_map = |i: String| { let unparsed_value = matches.get_one::(options::PAGES).unwrap(); - i.parse::().map_err(|_e| PrError::EncounteredErrors { + let parsed_value = i.parse::().map_err(|_e| PrError::EncounteredErrors { msg: format!("invalid --pages argument {}", unparsed_value.quote()), - }) + }); + + match parsed_value { + Ok(0) => Err(PrError::EncounteredErrors { + msg: "invalid --pages argument '0'".to_string(), + }), + Ok(res) => Ok(res), + Err(e) => Err(e), + } }; let res = matches @@ -750,6 +758,12 @@ fn build_options( let page_length = parse_usize(matches, options::PAGE_LENGTH).unwrap_or(Ok(default_lines_per_page))?; + if page_length == 0 { + return Err(PrError::EncounteredErrors { + msg: "invalid --length argument '0'".to_string(), + }); + } + let page_length_le_ht = page_length < (HEADER_LINES_PER_PAGE + TRAILER_LINES_PER_PAGE); let display_header_and_trailer = !page_length_le_ht From 67b58292fc64ac8faba28c21a24e6c7ea28afe1e Mon Sep 17 00:00:00 2001 From: Devel Date: Thu, 11 Jun 2026 18:26:53 +0300 Subject: [PATCH 2/3] add test_zero_length and test_zero_pages --- tests/by-util/test_pr.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/by-util/test_pr.rs b/tests/by-util/test_pr.rs index b7d500e6af..84e3acb160 100644 --- a/tests/by-util/test_pr.rs +++ b/tests/by-util/test_pr.rs @@ -946,3 +946,19 @@ fn test_zero_page_width() { .fails_with_code(1) .stderr_is("pr: invalid --page-width argument '0'\n"); } + +#[test] +fn test_zero_length() { + new_ucmd!() + .args(&["-l", "0"]) + .fails_with_code(1) + .stderr_is("pr: invalid --length argument '0'\n"); +} + +#[test] +fn test_zero_pages() { + new_ucmd!() + .args(&["--pages", "0"]) + .fails_with_code(1) + .stderr_is("pr: invalid --pages argument '0'\n"); +} From c56b5ad86968c24581ca6a6c3a1513bd462a6457 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 15:30:02 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/uu/pr/src/pr.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uu/pr/src/pr.rs b/src/uu/pr/src/pr.rs index 28a5fb5820..2a216c7b30 100644 --- a/src/uu/pr/src/pr.rs +++ b/src/uu/pr/src/pr.rs @@ -763,7 +763,7 @@ fn build_options( msg: "invalid --length argument '0'".to_string(), }); } - + let page_length_le_ht = page_length < (HEADER_LINES_PER_PAGE + TRAILER_LINES_PER_PAGE); let display_header_and_trailer = !page_length_le_ht