diff options
Diffstat (limited to 'src/test/ui/command/command-setgroups.rs')
-rw-r--r-- | src/test/ui/command/command-setgroups.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/ui/command/command-setgroups.rs b/src/test/ui/command/command-setgroups.rs new file mode 100644 index 000000000..aff67f91b --- /dev/null +++ b/src/test/ui/command/command-setgroups.rs @@ -0,0 +1,26 @@ +// run-pass +// ignore-windows - this is a unix-specific test +// ignore-emscripten +// ignore-sgx +// ignore-musl - returns dummy result for _SC_NGROUPS_MAX + +#![feature(rustc_private)] +#![feature(setgroups)] + +extern crate libc; +use std::process::Command; +use std::os::unix::process::CommandExt; + +fn main() { + #[cfg(unix)] + run() +} + +#[cfg(unix)] +fn run() { + let max_ngroups = unsafe { libc::sysconf(libc::_SC_NGROUPS_MAX) }; + let max_ngroups = max_ngroups as u32 + 1; + let vec: Vec<u32> = (0..max_ngroups).collect(); + let p = Command::new("/bin/id").groups(&vec[..]).spawn(); + assert!(p.is_err()); +} |