Skip to main content

Unconfined

Struct Unconfined 

Source
pub struct Unconfined { /* private fields */ }
Expand description

Runs commands on this machine, with no isolation whatsoever.

§Read this before using it

This is not a sandbox. A command run through it has whatever access the BoundGraph process itself has: the whole filesystem, the network, the environment of whatever started it. If the command decides to delete the workspace, it will.

What it actually enforces is three things:

  • the working directory is the command’s workspace,
  • the process is killed at the timeout,
  • the child’s environment is cleared except for the few variables a toolchain cannot start without.

And what it refuses is everything else: any grant beyond reading under the workspace and executing the named program is SandboxError::Unenforceable. It cannot make a net:egress grant true, so it will not accept one.

It exists because the compile and test checkers are useful now and feature 09 is not written yet, and it is named Unconfined so that nobody reads a flow definition containing it and thinks otherwise.

Implementations§

Source§

impl Unconfined

Source

pub fn new() -> Self

An unconfined runner.

Source

pub fn passing_through(self, name: impl Into<String>) -> Self

Also pass name through to the child.

For a toolchain that needs one — CARGO_HOME, RUSTUP_HOME, VIRTUAL_ENV. Every addition is a way for something the checker was not granted to reach the child, so add them one at a time and knowingly.

Trait Implementations§

Source§

impl Clone for Unconfined

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Unconfined

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Unconfined

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Sandbox for Unconfined

Source§

fn run<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, command: &'life1 Command, grant: &'life2 GrantSet, ) -> Pin<Box<dyn Future<Output = Result<Outcome, SandboxError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Run command, confined to grant. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V