diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-10-14 13:48:18 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-14 13:48:18 +0200 |
| commit | b236d11128c6b14a3e869d820c84c8ff7e753f38 (patch) | |
| tree | c5013fb73f84105452d9fe674095363c818f3a09 | |
| parent | 38999570863b2adc4598f1b949ff4e8fe53d4866 (diff) | |
| parent | 86e9b0f0d4881787bed2ff77d3bb6db56d077ee2 (diff) | |
| download | rust-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.rs | 4 |
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 } |
