From c3643ba710f7cf044b354b926f87031282080753 Mon Sep 17 00:00:00 2001 From: Fan Mo Date: Mon, 19 Jan 2026 17:04:58 -0600 Subject: [PATCH 1/4] mkfifo: do not change permission when failed to create --- src/uu/mkfifo/src/mkfifo.rs | 1 + tests/by-util/test_mkfifo.rs | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/uu/mkfifo/src/mkfifo.rs b/src/uu/mkfifo/src/mkfifo.rs index 3586eb7c37c..607b8a9aaf9 100644 --- a/src/uu/mkfifo/src/mkfifo.rs +++ b/src/uu/mkfifo/src/mkfifo.rs @@ -44,6 +44,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { 1, translate!("mkfifo-error-cannot-create-fifo", "path" => f.quote()), )); + continue; } // Explicitly set the permissions to ignore umask diff --git a/tests/by-util/test_mkfifo.rs b/tests/by-util/test_mkfifo.rs index ac0b78b3a3b..8803ebff059 100644 --- a/tests/by-util/test_mkfifo.rs +++ b/tests/by-util/test_mkfifo.rs @@ -199,3 +199,29 @@ fn test_mkfifo_selinux_invalid() { } } } + +#[test] +fn test_mkfifo_permision_unchanged_when_failed() { + use uucore::fs::display_permissions; + + let scene = TestScenario::new(util_name!()); + let at = &scene.fixtures; + + let file_name = "testfifo"; + at.write(file_name, "content"); + at.set_mode(file_name, 0o600); + + let err_msg = format!("mkfifo: cannot create fifo '{file_name}': File exists"); + + scene + .ucmd() + .arg(file_name) + .arg("-m") + .arg("666") + .fails() + .stderr_is(err_msg.as_str()); + let metadata = std::fs::metadata(at.subdir.join(file_name)).unwrap(); + let permissions = display_permissions(&metadata, true); + let expected = "prw-------"; + assert_eq!(permissions, expected.to_string()); +} From 6dda0a5e2bb3b9687bf986365a2a5561d501f028 Mon Sep 17 00:00:00 2001 From: Fan Mo Date: Mon, 19 Jan 2026 21:02:04 -0600 Subject: [PATCH 2/4] fix spell --- tests/by-util/test_mkfifo.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/by-util/test_mkfifo.rs b/tests/by-util/test_mkfifo.rs index 8803ebff059..2362a4cd327 100644 --- a/tests/by-util/test_mkfifo.rs +++ b/tests/by-util/test_mkfifo.rs @@ -201,13 +201,13 @@ fn test_mkfifo_selinux_invalid() { } #[test] -fn test_mkfifo_permision_unchanged_when_failed() { +fn test_mkfifo_permission_unchanged_when_failed() { use uucore::fs::display_permissions; let scene = TestScenario::new(util_name!()); let at = &scene.fixtures; - let file_name = "testfifo"; + let file_name = "test_file"; at.write(file_name, "content"); at.set_mode(file_name, 0o600); From d69dd0b3bfa645f9eaa81f2e6c79d2eee75b3bb2 Mon Sep 17 00:00:00 2001 From: Fan Mo Date: Mon, 19 Jan 2026 21:41:59 -0600 Subject: [PATCH 3/4] fix tests --- tests/by-util/test_mkfifo.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tests/by-util/test_mkfifo.rs b/tests/by-util/test_mkfifo.rs index 2362a4cd327..c37f7c9cecb 100644 --- a/tests/by-util/test_mkfifo.rs +++ b/tests/by-util/test_mkfifo.rs @@ -137,11 +137,9 @@ fn test_create_fifo_permission_denied() { at.mkdir(no_exec_dir); at.set_mode(no_exec_dir, 0o644); - let err_msg = format!( - "mkfifo: cannot create fifo '{named_pipe}': File exists -mkfifo: cannot set permissions on '{named_pipe}': Permission denied (os error 13) -" - ); + // We no longer attempt to modify file permision if the file was failed to be created. + // Therefore the error message should only contain "cannot create". + let err_msg = format!("mkfifo: cannot create fifo '{named_pipe}': File exists\n"); scene .ucmd() @@ -211,7 +209,7 @@ fn test_mkfifo_permission_unchanged_when_failed() { at.write(file_name, "content"); at.set_mode(file_name, 0o600); - let err_msg = format!("mkfifo: cannot create fifo '{file_name}': File exists"); + let err_msg = format!("mkfifo: cannot create fifo '{file_name}': File exists\n"); scene .ucmd() @@ -222,6 +220,6 @@ fn test_mkfifo_permission_unchanged_when_failed() { .stderr_is(err_msg.as_str()); let metadata = std::fs::metadata(at.subdir.join(file_name)).unwrap(); let permissions = display_permissions(&metadata, true); - let expected = "prw-------"; + let expected = "-rw-------"; assert_eq!(permissions, expected.to_string()); } From b09480f0923b691e9d463955d1c93bb4c2bee007 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 20 Jan 2026 09:33:56 +0100 Subject: [PATCH 4/4] fix typo --- tests/by-util/test_mkfifo.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/by-util/test_mkfifo.rs b/tests/by-util/test_mkfifo.rs index c37f7c9cecb..35869fe5ddb 100644 --- a/tests/by-util/test_mkfifo.rs +++ b/tests/by-util/test_mkfifo.rs @@ -137,7 +137,7 @@ fn test_create_fifo_permission_denied() { at.mkdir(no_exec_dir); at.set_mode(no_exec_dir, 0o644); - // We no longer attempt to modify file permision if the file was failed to be created. + // We no longer attempt to modify file permission if the file was failed to be created. // Therefore the error message should only contain "cannot create". let err_msg = format!("mkfifo: cannot create fifo '{named_pipe}': File exists\n");