in seccomp/seccomp_exec.go [36:77]
func main() {
flag.StringVar(&policyFile, "policy", "seccomp.yml", "seccomp policy file")
flag.BoolVar(&noNewPrivs, "no-new-privs", true, "set no new privs bit")
flag.Parse()
args := flag.Args()
if len(args) == 0 {
fmt.Fprintf(os.Stderr, "You must specify a command and args to execute.\n")
os.Exit(1)
}
policy, err := parsePolicy(policyFile)
if err != nil {
fmt.Fprintf(os.Stderr, "error: %v\n", err)
os.Exit(1)
}
filter := seccomp.Filter{
NoNewPrivs: noNewPrivs,
Flag: seccomp.FilterFlagTSync,
Policy: *policy,
}
if err = seccomp.LoadFilter(filter); err != nil {
fmt.Fprintf(os.Stderr, "error loading filter: %v\n", err)
os.Exit(1)
}
// Execute the specified command
cmd := exec.Command(args[0], args[1:]...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
/*
* cmd.Start doesn't apply the seccomp rules
*/
if err = cmd.Run(); err != nil {
fmt.Fprintf(os.Stderr, "error: %v\n", err)
os.Exit(1)
}
}