Skip to content

Commit 8c9944c

Browse files
anptmandry
authored andcommitted
Fix remove_dir_all on Fuchsia after CVE fix.
With the previous `is_dir` impl, we would attempt to unlink a directory in the None branch, but Fuchsia supports returning ENOTEMPTY from unlinkat() without the AT_REMOVEDIR flag because we don't currently differentiate unlinking files and directories by default. On the Fuchsia side I've opened https://fxbug.dev/92273 to discuss whether this is the correct behavior, but it doesn't seem like addressing the error code is necessary to make our tests happy. Updates std's libc crate to include DT_UNKNOWN for Fuchsia.
1 parent a7f3757 commit 8c9944c

File tree

3 files changed

+3
-5
lines changed

3 files changed

+3
-5
lines changed

Cargo.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -1986,9 +1986,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
19861986

19871987
[[package]]
19881988
name = "libc"
1989-
version = "0.2.108"
1989+
version = "0.2.116"
19901990
source = "registry+https://github.com/rust-lang/crates.io-index"
1991-
checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119"
1991+
checksum = "565dbd88872dbe4cc8a46e527f26483c1d1f7afa6b884a3bd6cd893d4f98da74"
19921992
dependencies = [
19931993
"rustc-std-workspace-core",
19941994
]

library/std/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ cfg-if = { version = "0.1.8", features = ['rustc-dep-of-std'] }
1515
panic_unwind = { path = "../panic_unwind", optional = true }
1616
panic_abort = { path = "../panic_abort" }
1717
core = { path = "../core" }
18-
libc = { version = "0.2.108", default-features = false, features = ['rustc-dep-of-std'] }
18+
libc = { version = "0.2.116", default-features = false, features = ['rustc-dep-of-std'] }
1919
compiler_builtins = { version = "0.1.66" }
2020
profiler_builtins = { path = "../profiler_builtins", optional = true }
2121
unwind = { path = "../unwind" }

library/std/src/sys/unix/fs.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1631,7 +1631,6 @@ mod remove_dir_impl {
16311631
target_os = "illumos",
16321632
target_os = "haiku",
16331633
target_os = "vxworks",
1634-
target_os = "fuchsia"
16351634
))]
16361635
fn is_dir(_ent: &DirEntry) -> Option<bool> {
16371636
None
@@ -1642,7 +1641,6 @@ mod remove_dir_impl {
16421641
target_os = "illumos",
16431642
target_os = "haiku",
16441643
target_os = "vxworks",
1645-
target_os = "fuchsia"
16461644
)))]
16471645
fn is_dir(ent: &DirEntry) -> Option<bool> {
16481646
match ent.entry.d_type {

0 commit comments

Comments
 (0)