11use crate :: fmt;
2- use crate :: io:: { self , Error , ErrorKind } ;
2+ use crate :: io:: { self , Error } ;
33use crate :: mem;
44use crate :: num:: NonZero ;
55use crate :: sys;
@@ -66,12 +66,7 @@ impl Command {
6666
6767 let envp = self . capture_env ( ) ;
6868
69- if self . saw_nul ( ) {
70- return Err ( io:: const_io_error!(
71- ErrorKind :: InvalidInput ,
72- "nul byte found in provided data" ,
73- ) ) ;
74- }
69+ self . validate_input ( ) ?;
7570
7671 let ( ours, theirs) = self . setup_io ( default, needs_stdin) ?;
7772
@@ -182,7 +177,7 @@ impl Command {
182177 // way to avoid that all-together.
183178 #[ cfg( any( target_os = "tvos" , target_os = "watchos" ) ) ]
184179 const ERR_APPLE_TV_WATCH_NO_FORK_EXEC : Error = io:: const_io_error!(
185- ErrorKind :: Unsupported ,
180+ io :: ErrorKind :: Unsupported ,
186181 "`fork`+`exec`-based process spawning is not supported on this target" ,
187182 ) ;
188183
@@ -223,7 +218,7 @@ impl Command {
223218 thread:: sleep ( delay) ;
224219 } else {
225220 return Err ( io:: const_io_error!(
226- ErrorKind :: WouldBlock ,
221+ io :: ErrorKind :: WouldBlock ,
227222 "forking returned EBADF too often" ,
228223 ) ) ;
229224 }
@@ -238,8 +233,8 @@ impl Command {
238233 pub fn exec ( & mut self , default : Stdio ) -> io:: Error {
239234 let envp = self . capture_env ( ) ;
240235
241- if self . saw_nul ( ) {
242- return io :: const_io_error! ( ErrorKind :: InvalidInput , "nul byte found in provided data" , ) ;
236+ if let Err ( err ) = self . validate_input ( ) {
237+ return err ;
243238 }
244239
245240 match self . setup_io ( default, true ) {
@@ -499,7 +494,7 @@ impl Command {
499494 thread:: sleep ( delay) ;
500495 } else {
501496 return Err ( io:: const_io_error!(
502- ErrorKind :: WouldBlock ,
497+ io :: ErrorKind :: WouldBlock ,
503498 "posix_spawnp returned EBADF too often" ,
504499 ) ) ;
505500 }
@@ -1111,14 +1106,14 @@ impl crate::os::linux::process::ChildExt for crate::process::Child {
11111106 self . handle
11121107 . pidfd
11131108 . as_ref ( )
1114- . ok_or_else ( || Error :: new ( ErrorKind :: Uncategorized , "No pidfd was created." ) )
1109+ . ok_or_else ( || Error :: new ( io :: ErrorKind :: Uncategorized , "No pidfd was created." ) )
11151110 }
11161111
11171112 fn take_pidfd ( & mut self ) -> io:: Result < PidFd > {
11181113 self . handle
11191114 . pidfd
11201115 . take ( )
1121- . ok_or_else ( || Error :: new ( ErrorKind :: Uncategorized , "No pidfd was created." ) )
1116+ . ok_or_else ( || Error :: new ( io :: ErrorKind :: Uncategorized , "No pidfd was created." ) )
11221117 }
11231118}
11241119
0 commit comments