From e9adf979d9bbc62bda882634531cc7350b7c117c Mon Sep 17 00:00:00 2001 From: Omer Tuchfeld Date: Sun, 6 Feb 2022 22:15:27 +0100 Subject: [PATCH] Fix type-error when calling `parse_size` from stdbuf --- src/uu/stdbuf/src/stdbuf.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/uu/stdbuf/src/stdbuf.rs b/src/uu/stdbuf/src/stdbuf.rs index a568ab277..d6e136dcb 100644 --- a/src/uu/stdbuf/src/stdbuf.rs +++ b/src/uu/stdbuf/src/stdbuf.rs @@ -11,7 +11,7 @@ extern crate uucore; use clap::{crate_version, App, AppSettings, Arg, ArgMatches}; -use std::convert::TryFrom; +use std::convert::{TryFrom, TryInto}; use std::fs::File; use std::io::{self, Write}; use std::os::unix::process::ExitStatusExt; @@ -117,7 +117,14 @@ fn check_option(matches: &ArgMatches, name: &str) -> Result parse_size(x).map_or_else( |e| crash!(125, "invalid mode {}", e), - |m| Ok(BufferType::Size(m)), + |m| { + Ok(BufferType::Size(m.try_into().map_err(|_| { + ProgramOptionsError(format!( + "invalid mode {}: Value too large for defined data type", + x + )) + })?)) + }, ), }, None => Ok(BufferType::Default),