Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FlagsToSandbox ¶
Types ¶
type CallInfo ¶
type CallInfo struct { Flags CallFlags Signal []uint32 // feedback signal, filled if FlagSignal is set Cover []uint32 // per-call coverage, filled if FlagSignal is set and cover == true, // if dedup == false, then cov effectively contains a trace, otherwise duplicates are removed Comps prog.CompMap // per-call comparison operands Errno int // call errno (0 if the call was successful) }
type Config ¶
type Config struct { // Path to executor binary. Executor string // Flags are configuation flags, defined above. Flags EnvFlags // Timeout is the execution timeout for a single program. Timeout time.Duration }
Config is the configuration for Env.
type Env ¶
func (*Env) Exec ¶
func (env *Env) Exec(opts *ExecOpts, p *prog.Prog) (output []byte, info *ProgInfo, hanged bool, err0 error)
Exec starts executor binary to execute program p and returns information about the execution: output: process output info: per-call info hanged: program hanged and was killed err0: failed to start the process or bug in executor itself
type EnvFlags ¶
type EnvFlags uint64
Configuration flags for Config.Flags.
const ( FlagDebug EnvFlags = 1 << iota // debug output from executor FlagSignal // collect feedback signals (coverage) FlagSandboxSetuid // impersonate nobody user FlagSandboxNamespace // use namespaces for sandboxing FlagSandboxAndroidUntrustedApp // use Android sandboxing for the untrusted_app domain FlagExtraCover // collect extra coverage FlagEnableTun // setup and use /dev/tun for packet injection FlagEnableNetDev // setup more network devices for testing FlagEnableNetReset // reset network namespace between programs FlagEnableCgroups // setup cgroups for testing FlagEnableCloseFds // close fds after each program FlagEnableDevlinkPCI // setup devlink PCI device // Executor does not know about these: FlagUseShmem // use shared memory instead of pipes for communication FlagUseForkServer // use extended protocol with handshake )
Note: New / changed flags should be added to parse_env_flags in executor.cc
func SandboxToFlags ¶
type ExecFlags ¶
type ExecFlags uint64
Per-exec flags for ExecOpts.Flags:
const ( FlagCollectCover ExecFlags = 1 << iota // collect coverage FlagDedupCover // deduplicate coverage in executor FlagInjectFault // inject a fault in this execution (see ExecOpts) FlagCollectComps // collect KCOV comparisons FlagThreaded // use multiple threads to mitigate blocked syscalls FlagCollide // collide syscalls to provoke data races )
type Gate ¶
type Gate struct {
// contains filtered or unexported fields
}
Gate limits concurrency level and window to the given value. Limitation of concurrency window means that if a very old activity is still running it will not let new activities to start even if concurrency level is low.
Click to show internal directories.
Click to hide internal directories.