aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/syscall_range_proc.go
diff options
context:
space:
mode:
Diffstat (limited to 'container/syscall_range_proc.go')
-rw-r--r--container/syscall_range_proc.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/container/syscall_range_proc.go b/container/syscall_range_proc.go
new file mode 100644
index 00000000..62b369f0
--- /dev/null
+++ b/container/syscall_range_proc.go
@@ -0,0 +1,28 @@
+//go:build !close_range
+
+package container
+
+import (
+ "os"
+ "strconv"
+ "syscall"
+
+ "hakurei.app/container/fhs"
+)
+
+// doCloseOnExec implements ensureCloseOnExec by ranging over proc_pid_fd(5).
+func doCloseOnExec() error {
+ entries, err := os.ReadDir(fhs.ProcSelf + "fd/")
+ if err != nil {
+ return err
+ }
+
+ var fd int
+ for _, ent := range entries {
+ if fd, err = strconv.Atoi(ent.Name()); err != nil {
+ return err // not reached
+ }
+ syscall.CloseOnExec(fd)
+ }
+ return nil
+}