diff --git a/changelog/2747.changed.md b/changelog/2747.changed.md new file mode 100644 index 0000000000..bfce6b898c --- /dev/null +++ b/changelog/2747.changed.md @@ -0,0 +1 @@ +`Dir::as_raw_fd` now panics if `libc::dirfd` returns a negative value. diff --git a/src/dir.rs b/src/dir.rs index 80bf1b56c9..f90824dbc9 100644 --- a/src/dir.rs +++ b/src/dir.rs @@ -137,7 +137,9 @@ impl std::os::fd::AsFd for Dir { impl AsRawFd for Dir { fn as_raw_fd(&self) -> RawFd { - unsafe { libc::dirfd(self.0.as_ptr()) } + let fd = unsafe { libc::dirfd(self.0.as_ptr()) }; + assert!(fd >= 0, "dirfd returned error: {}", Errno::last()); + fd } }