diff options
Diffstat (limited to 'pkg/flatrpc/helpers.go')
| -rw-r--r-- | pkg/flatrpc/helpers.go | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/pkg/flatrpc/helpers.go b/pkg/flatrpc/helpers.go index 22dc893fe..b85951615 100644 --- a/pkg/flatrpc/helpers.go +++ b/pkg/flatrpc/helpers.go @@ -4,6 +4,7 @@ package flatrpc import ( + "fmt" "slices" "syscall" ) @@ -25,6 +26,7 @@ type HostMessage = HostMessageRawT type ExecutorMessages = ExecutorMessagesRawT type ExecutorMessage = ExecutorMessageRawT type ExecRequest = ExecRequestRawT +type StateRequest = StateRequestRawT type SignalUpdate = SignalUpdateRawT type StartLeakChecks = StartLeakChecksRawT type ExecutingMessage = ExecutingMessageRawT @@ -33,6 +35,7 @@ type Comparison = ComparisonRawT type ExecOpts = ExecOptsRawT type ProgInfo = ProgInfoRawT type ExecResult = ExecResultRawT +type StateResult = StateResultRawT func (pi *ProgInfo) Clone() *ProgInfo { if pi == nil { @@ -71,9 +74,30 @@ func EmptyProgInfo(calls int) *ProgInfo { return info } -func (eo ExecOpts) MergeFlags(diff ExecOpts) ExecOpts { - ret := eo - ret.ExecFlags |= diff.ExecFlags - ret.EnvFlags |= diff.EnvFlags - return ret +func SandboxToFlags(sandbox string) (ExecEnv, error) { + switch sandbox { + case "none": + return ExecEnvSandboxNone, nil + case "setuid": + return ExecEnvSandboxSetuid, nil + case "namespace": + return ExecEnvSandboxNamespace, nil + case "android": + return ExecEnvSandboxAndroid, nil + default: + return 0, fmt.Errorf("sandbox must contain one of none/setuid/namespace/android") + } +} + +func FlagsToSandbox(flags ExecEnv) string { + if flags&ExecEnvSandboxNone != 0 { + return "none" + } else if flags&ExecEnvSandboxSetuid != 0 { + return "setuid" + } else if flags&ExecEnvSandboxNamespace != 0 { + return "namespace" + } else if flags&ExecEnvSandboxAndroid != 0 { + return "android" + } + panic("no sandbox flags present") } |
