diff --git a/src/uu/cksum/src/cksum.rs b/src/uu/cksum/src/cksum.rs index 9af2f6f00ff..cf99cb81300 100644 --- a/src/uu/cksum/src/cksum.rs +++ b/src/uu/cksum/src/cksum.rs @@ -64,7 +64,24 @@ fn maybe_sanitize_length( // will have its extra bits set to zero. (Some(AlgoKind::Shake128 | AlgoKind::Shake256), Some(len)) => match len.parse::() { Ok(0) => Ok(None), - Ok(l) => Ok(Some(HashLength::from_bits(l))), + Ok(l) => { + const BITS_PER_BYTE: usize = 8; + const OOM_SAFETY_CUSHION_BYTES: usize = 65536; + let bytes_needed = l.div_ceil(BITS_PER_BYTE); + + let mut test_buffer: Vec = Vec::new(); + + let safety_cushion = bytes_needed.saturating_add(OOM_SAFETY_CUSHION_BYTES); + + if test_buffer.try_reserve(safety_cushion).is_err() { + return Err(uucore::error::USimpleError::new( + 1, + translate!("memory exhausted"), + )); + } + + Ok(Some(HashLength::from_bits(l))) + } Err(_) => Err(ChecksumError::InvalidLength(len.into()).into()), }, @@ -115,7 +132,6 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { if matches.get_flag(options::DEBUG) { print_cpu_debug_info(); } - checksum_main(algo_cli, length, matches, output_format) } diff --git a/src/uu/false/src/false.rs b/src/uu/false/src/false.rs index d99d8ece4aa..4ef857f84cc 100644 --- a/src/uu/false/src/false.rs +++ b/src/uu/false/src/false.rs @@ -35,6 +35,7 @@ pub fn uu_app() -> Command { .version(crate_version!()) .help_template(uucore::localized_help_template("false")) .about(translate!("false-about")) + .override_usage(translate!("false-usage")) // We provide our own help and version options, to ensure maximum compatibility with GNU. .disable_help_flag(true) .disable_version_flag(true) diff --git a/src/uu/true/src/true.rs b/src/uu/true/src/true.rs index 6e259d17f21..aa0d0a3cfcc 100644 --- a/src/uu/true/src/true.rs +++ b/src/uu/true/src/true.rs @@ -40,6 +40,7 @@ pub fn uu_app() -> Command { .version(crate_version!()) .help_template(uucore::localized_help_template("true")) .about(translate!("true-about")) + .override_usage(translate!("true-usage")) // We provide our own help and version options, to ensure maximum compatibility with GNU. .disable_help_flag(true) .disable_version_flag(true)