diff --git a/cmd/runprog/main_linux.go b/cmd/runprog/main_linux.go index 5032eb3..031b577 100644 --- a/cmd/runprog/main_linux.go +++ b/cmd/runprog/main_linux.go @@ -223,7 +223,7 @@ func start() (*runner.Result, error) { if memfile { fin, err := os.Open(args[0]) if err != nil { - return nil, fmt.Errorf("filed to open args[0]: %v", err) + return nil, fmt.Errorf("failed to open args[0]: %v", err) } execf, err := memfd.DupToMemfd("run_program", fin) if err != nil { diff --git a/container/container_init_linux.go b/container/container_init_linux.go index 8b4b6cd..479701a 100644 --- a/container/container_init_linux.go +++ b/container/container_init_linux.go @@ -363,10 +363,5 @@ func maskPath(path string) error { } func ignoreSignals() { - // signals that cause run-time panic - signal.Ignore(syscall.SIGBUS, syscall.SIGFPE, syscall.SIGSEGV) - // signals that cause the program to exit - signal.Ignore(syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM) - // signals that cause the program to exit with a stack dump - signal.Ignore(syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, syscall.SIGABRT, syscall.SIGSTKFLT, syscall.SIGSYS) + signal.Ignore(signalToIgnore...) } diff --git a/container/signal_linux.go b/container/signal_linux.go new file mode 100644 index 0000000..89da440 --- /dev/null +++ b/container/signal_linux.go @@ -0,0 +1,17 @@ +//go:build linux && !mips64 && !mips64le + +package container + +import ( + "os" + "syscall" +) + +var signalToIgnore = []os.Signal{ + // signals that cause run-time panic + syscall.SIGBUS, syscall.SIGFPE, syscall.SIGSEGV, + // signals that cause the program to exit + syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, + // signals that cause the program to exit with a stack dump + syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, syscall.SIGABRT, syscall.SIGSTKFLT, syscall.SIGSYS, +} diff --git a/container/signal_linux_mips64x.go b/container/signal_linux_mips64x.go new file mode 100644 index 0000000..31f6527 --- /dev/null +++ b/container/signal_linux_mips64x.go @@ -0,0 +1,17 @@ +//go:build linux && (mips64 || mips64le) + +package container + +import ( + "os" + "syscall" +) + +var signalToIgnore = []os.Signal{ + // signals that cause run-time panic + syscall.SIGBUS, syscall.SIGFPE, syscall.SIGSEGV, + // signals that cause the program to exit + syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, + // signals that cause the program to exit with a stack dump + syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, syscall.SIGABRT, syscall.SIGSYS, +} diff --git a/go.mod b/go.mod index c974e05..8cc7bcf 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,11 @@ module github.com/criyle/go-sandbox -go 1.20 +go 1.21 require ( github.com/elastic/go-seccomp-bpf v1.3.0 - golang.org/x/net v0.14.0 - golang.org/x/sys v0.11.0 + golang.org/x/net v0.15.0 + golang.org/x/sys v0.12.0 ) + +require github.com/stretchr/testify v1.8.4 // indirect diff --git a/go.sum b/go.sum index a26839e..81c31fa 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,14 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/elastic/go-seccomp-bpf v1.3.0 h1:e6teyX946lvPOnZERSYRrMYmsjxaQcWhoiGTsxLu3Lc= github.com/elastic/go-seccomp-bpf v1.3.0/go.mod h1:wIMxjTbKpWGQk4CV9WltlG6haB4brjSH/dvAohBPM1I= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=