File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -11,3 +11,4 @@ mkfifo-error-invalid-mode = invalid mode: { $error }
1111mkfifo-error-missing-operand = missing operand
1212mkfifo-error-cannot-create-fifo = cannot create fifo { $path } : File exists
1313mkfifo-error-cannot-set-permissions = cannot set permissions on { $path } : { $error }
14+ mkfifo-error-non-file-permission = mode must specify only file permission bits
Original file line number Diff line number Diff line change @@ -11,3 +11,4 @@ mkfifo-error-invalid-mode = mode invalide : { $error }
1111mkfifo-error-missing-operand = opérande manquant
1212mkfifo-error-cannot-create-fifo = impossible de créer le fifo { $path } : Le fichier existe
1313mkfifo-error-cannot-set-permissions = impossible de définir les permissions sur { $path } : { $error }
14+ mkfifo-error-non-file-permission = le mode ne doit spécifier que des bits de permission de fichier
Original file line number Diff line number Diff line change @@ -28,6 +28,15 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
2828 let mode = calculate_mode ( matches. get_one :: < String > ( options:: MODE ) )
2929 . map_err ( |e| USimpleError :: new ( 1 , translate ! ( "mkfifo-error-invalid-mode" , "error" => e) ) ) ?;
3030
31+ // Check if mode contains special bits
32+ let non_file_permission_bits = 0o7000 ; // setuid, setgid, sticky bits
33+ if mode & non_file_permission_bits != 0 {
34+ return Err ( USimpleError :: new (
35+ 1 ,
36+ translate ! ( "mkfifo-error-non-file-permission" ) ,
37+ ) ) ;
38+ }
39+
3140 let fifos: Vec < String > = match matches. get_many :: < String > ( options:: FIFO ) {
3241 Some ( v) => v. cloned ( ) . collect ( ) ,
3342 None => {
Original file line number Diff line number Diff line change @@ -43,6 +43,22 @@ fn test_create_one_fifo_with_invalid_mode() {
4343 . stderr_contains ( "invalid mode" ) ;
4444}
4545
46+ #[ test]
47+ fn test_create_one_fifo_with_non_file_permission_mode ( ) {
48+ new_ucmd ! ( )
49+ . arg ( "abcd" )
50+ . arg ( "-m" )
51+ . arg ( "1777" )
52+ . fails ( )
53+ . stderr_is ( "mkfifo: mode must specify only file permission bits\n " ) ;
54+ new_ucmd ! ( )
55+ . arg ( "abcd" )
56+ . arg ( "-m" )
57+ . arg ( "1999" )
58+ . fails ( )
59+ . stderr_contains ( "invalid mode" ) ;
60+ }
61+
4662#[ test]
4763fn test_create_multiple_fifos ( ) {
4864 new_ucmd ! ( )
You can’t perform that action at this time.
0 commit comments