From: "matz (Yukihiro Matsumoto) via ruby-core" <ruby-core@...>
Date: 2023-02-09T07:32:23+00:00
Subject: [ruby-core:112293] [Ruby master Feature#19347] Add Dir.fchdir

Issue #19347 has been updated by matz (Yukihiro Matsumoto).


I agree with having `Dir.for_fd` and `Dir#chdir` as well. If the assumed use-case is handling a file descriptor sent via UNIX domain socket, allowing `chdir` only is not sufficient. We should allow other directory-related operations via `Dir` class.

Matz.


----------------------------------------
Feature #19347: Add Dir.fchdir
https://bugs.ruby-lang.org/issues/19347#change-101726

* Author: jeremyevans0 (Jeremy Evans)
* Status: Open
* Priority: Normal
----------------------------------------
Recently, I was working on a program that passes file descriptors over UNIX sockets (using `send_io`/`recv_io`).  For file/socket/device descriptors, this works fine using `File#reopen`.  However, I found that while Ruby supports `Dir#fileno` to return a directory file descriptor, it cannot use that file descriptor when changing directories.

I worked around this in my program by writing the directory path over the UNIX socket, but this results in a TOCTOU vulnerability in certain cases.  Passing the directory file descriptor would be simpler and avoid the vulnerability.

I've submitted a pull request to implement this method: https://github.com/ruby/ruby/pull/7135



-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/