about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2023-10-14 13:48:18 +0200
committerGitHub <noreply@github.com>2023-10-14 13:48:18 +0200
commitb236d11128c6b14a3e869d820c84c8ff7e753f38 (patch)
treec5013fb73f84105452d9fe674095363c818f3a09
parent38999570863b2adc4598f1b949ff4e8fe53d4866 (diff)
parent86e9b0f0d4881787bed2ff77d3bb6db56d077ee2 (diff)
downloadrust-b236d11128c6b14a3e869d820c84c8ff7e753f38.tar.gz
rust-b236d11128c6b14a3e869d820c84c8ff7e753f38.zip
Rollup merge of #116577 - onur-ozkan:add-safety-block-on-unsafe, r=clubby789
add `SAFETY` block on the usage of unsafe `getuid`

We pointed out this unsafe usage in #109859, and as a result, we received a fix PR #116476. However, it's important to note that the `libc::getuid()` never actually fails. This PR aims to clarify its safety.
-rw-r--r--src/bootstrap/lib.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
index 6671f816e57..a9a81cb25f6 100644
--- a/src/bootstrap/lib.rs
+++ b/src/bootstrap/lib.rs
@@ -359,6 +359,10 @@ impl Build {
         // https://github.com/rust-lang/rust/blob/a8a33cf27166d3eabaffc58ed3799e054af3b0c6/src/bootstrap/bootstrap.py#L796-L797
         let is_sudo = match env::var_os("SUDO_USER") {
             Some(_sudo_user) => {
+                // SAFETY: getuid() system call is always successful and no return value is reserved
+                // to indicate an error.
+                //
+                // For more context, see https://man7.org/linux/man-pages/man2/geteuid.2.html
                 let uid = unsafe { libc::getuid() };
                 uid == 0
             }