mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
Conditionally apply linux-only operations
Rust's libc considers android to be different than linux and provides certain functions exclusively for target_os = "linux". BUG=b:185155959 Change-Id: I664821fd678f0c911deb9312fe5fcfc9faf00053 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2822209 Tested-by: Jorge Moreira Broche <jemoreira@google.com> Commit-Queue: Jorge Moreira Broche <jemoreira@google.com> Reviewed-by: Zach Reizner <zachr@chromium.org>
This commit is contained in:
parent
6d473b3615
commit
1e3cb9faa1
2 changed files with 17 additions and 10 deletions
|
@ -158,6 +158,9 @@ impl ProxyDevice {
|
|||
let debug_label_trimmed =
|
||||
&debug_label.as_bytes()[..std::cmp::min(max_len, debug_label.len())];
|
||||
let thread_name = CString::new(debug_label_trimmed).unwrap();
|
||||
// TODO(crbug.com/1199487): remove this once libc provides the wrapper for all
|
||||
// targets
|
||||
#[cfg(all(target_os = "linux", target_env = "gnu"))]
|
||||
let _ = libc::pthread_setname_np(libc::pthread_self(), thread_name.as_ptr());
|
||||
device.on_sandboxed();
|
||||
child_proc(child_tube, &mut device);
|
||||
|
|
|
@ -188,18 +188,22 @@ impl<F: FileSystem + Sync> Worker<F> {
|
|||
// cases.
|
||||
const SECBIT_NO_SETUID_FIXUP: i32 = 1 << 2;
|
||||
|
||||
// Safe because this doesn't modify any memory and we check the return value.
|
||||
let mut securebits = unsafe { libc::prctl(libc::PR_GET_SECUREBITS) };
|
||||
if securebits < 0 {
|
||||
return Err(Error::GetSecurebits(io::Error::last_os_error()));
|
||||
}
|
||||
// TODO(crbug.com/1199487): Remove this once libc provides the wrapper for all targets.
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
// Safe because this doesn't modify any memory and we check the return value.
|
||||
let mut securebits = unsafe { libc::prctl(libc::PR_GET_SECUREBITS) };
|
||||
if securebits < 0 {
|
||||
return Err(Error::GetSecurebits(io::Error::last_os_error()));
|
||||
}
|
||||
|
||||
securebits |= SECBIT_NO_SETUID_FIXUP;
|
||||
securebits |= SECBIT_NO_SETUID_FIXUP;
|
||||
|
||||
// Safe because this doesn't modify any memory and we check the return value.
|
||||
let ret = unsafe { libc::prctl(libc::PR_SET_SECUREBITS, securebits) };
|
||||
if ret < 0 {
|
||||
return Err(Error::SetSecurebits(io::Error::last_os_error()));
|
||||
// Safe because this doesn't modify any memory and we check the return value.
|
||||
let ret = unsafe { libc::prctl(libc::PR_SET_SECUREBITS, securebits) };
|
||||
if ret < 0 {
|
||||
return Err(Error::SetSecurebits(io::Error::last_os_error()));
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(PollToken)]
|
||||
|
|
Loading…
Reference in a new issue