1
Fork 0

Minor rewrite of env::current_exe docs; clarify symlinks.

- Update example in ‘security’ section to use hard links, like the
  linked securityvulns.com example.
- Weaken language on symbolic links – indicate behavior is
  platform-specific

Fixes https://github.com/rust-lang/rust/issues/43617.
This commit is contained in:
Corey Farwell 2017-12-24 11:29:13 -08:00
parent 51b47dc4a1
commit 17380f2ac6

View file

@ -571,8 +571,11 @@ pub fn temp_dir() -> PathBuf {
/// Returns the full filesystem path of the current running executable. /// Returns the full filesystem path of the current running executable.
/// ///
/// The path returned is not necessarily a "real path" of the executable as /// # Platform-specific behavior
/// there may be intermediate symlinks. ///
/// If the executable was invoked through a symbolic link, some platforms will
/// return the path of the symbolic link and other platforms will return the
/// path of the symbolic links target.
/// ///
/// # Errors /// # Errors
/// ///
@ -599,14 +602,14 @@ pub fn temp_dir() -> PathBuf {
/// Ok("/home/alex/foo") /// Ok("/home/alex/foo")
/// ``` /// ```
/// ///
/// And you make a symbolic link of the program: /// And you make a hard link of the program:
/// ///
/// ```bash /// ```bash
/// $ ln foo bar /// $ ln foo bar
/// ``` /// ```
/// ///
/// When you run it, you won't get the original executable, you'll get the /// When you run it, you wont get the path of the original executable, youll
/// symlink: /// get the path of the hard link:
/// ///
/// ```bash /// ```bash
/// $ ./bar /// $ ./bar
@ -614,9 +617,9 @@ pub fn temp_dir() -> PathBuf {
/// ``` /// ```
/// ///
/// This sort of behavior has been known to [lead to privilege escalation] when /// This sort of behavior has been known to [lead to privilege escalation] when
/// used incorrectly, for example. /// used incorrectly.
/// ///
/// [lead to privilege escalation]: http://securityvulns.com/Wdocument183.html /// [lead to privilege escalation]: https://securityvulns.com/Wdocument183.html
/// ///
/// # Examples /// # Examples
/// ///