ollie/cmd/toolsrv/internal/sandbox/wrapper.go

31 lines
761 B
Go

package sandbox
import (
"encoding/base64"
"encoding/json"
"os"
)
// NativeCommand encodes a native sandbox helper invocation.
func NativeCommand(cfg *Config, originalCmd []string, cwd string, env map[string]string) ([]string, error) {
envCopy := make(map[string]string, len(env))
for k, v := range env {
envCopy[k] = v
}
data, err := json.Marshal(helperPolicy{Config: *cfg, CWD: cwd, Env: envCopy, Command: originalCmd})
if err != nil {
return nil, err
}
exe, err := os.Executable()
if err != nil {
return nil, err
}
return []string{exe, "sandbox-exec", base64.RawStdEncoding.EncodeToString(data)}, nil
}
// pathExists checks if a file or directory exists
func pathExists(path string) bool {
_, err := os.Stat(path)
return err == nil
}