carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1//go:build linux && rootrunner
2
3package host
4
5import (
6 "os"
7 "os/exec"
8 "path/filepath"
9 "testing"
10
11 "golang.org/x/sys/unix"
12)
13
14func TestPlan14GenerationKernelCensusRootRunner(t *testing.T) {
15 if dir := os.Getenv("PLAN14_E24_KERNEL_CHILD"); dir != "" {
16 t.Setenv("CARLOS_OPT_DIR", dir)
17 path := filepath.Join(dir, "versions", "v1", "app")
18 if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
19 t.Fatal(err)
20 }
21 if err := os.WriteFile(path, []byte("root census reference"), 0644); err != nil {
22 t.Fatal(err)
23 }
24 if boot, digest, err := productionGenerationKernelCensus(t.Context()); err != nil || boot == "" || len(digest) != 64 {
25 t.Fatalf("quiescent census: %s %s %v", boot, digest, err)
26 }
27 file, err := os.Open(path)
28 if err != nil {
29 t.Fatal(err)
30 }
31 if _, _, err := productionGenerationKernelCensus(t.Context()); err == nil {
32 file.Close()
33 t.Fatal("open unreserved file certified")
34 }
35 if err := os.Remove(path); err != nil {
36 file.Close()
37 t.Fatal(err)
38 }
39 if _, _, err := productionGenerationKernelCensus(t.Context()); err == nil {
40 file.Close()
41 t.Fatal("deleted open file certified")
42 }
43 file.Close()
44 if _, _, err := productionGenerationKernelCensus(t.Context()); err != nil {
45 t.Fatal("closed file still retained", err)
46 }
47 if err := os.WriteFile(path, []byte("root census reference"), 0644); err != nil {
48 t.Fatal(err)
49 }
50 alias := filepath.Join(dir, "alias")
51 if err := os.Mkdir(alias, 0755); err != nil {
52 t.Fatal(err)
53 }
54 if err := unix.Mount(filepath.Dir(path), alias, "", unix.MS_BIND, ""); err != nil {
55 t.Fatal(err)
56 }
57 mounted := true
58 t.Cleanup(func() {
59 if mounted {
60 if err := unix.Unmount(alias, 0); err != nil {
61 t.Error(err)
62 }
63 }
64 })
65 if _, _, err := productionGenerationKernelCensus(t.Context()); err == nil {
66 t.Fatal("bind alias certified")
67 }
68 if err := unix.Unmount(alias, 0); err != nil {
69 t.Fatal(err)
70 }
71 mounted = false
72 ns, err := os.Open("/proc/self/ns/mnt")
73 if err != nil {
74 t.Fatal(err)
75 }
76 if _, _, err := productionGenerationKernelCensus(t.Context()); err == nil {
77 ns.Close()
78 t.Fatal("retained namespace descriptor certified")
79 }
80 ns.Close()
81 if _, _, err := productionGenerationKernelCensus(t.Context()); err != nil {
82 t.Fatal("released references still retained", err)
83 }
84 return
85 }
86 dir := generationRootRunnerDir(t)
87 // A private PID/mount namespace gives the scan a controlled all-root census.
88 // No generated tenant unit or running-tenant containment is accepted here.
89 cmd := exec.CommandContext(t.Context(), "unshare", "--mount", "--pid", "--fork", "--mount-proc", os.Args[0], "-test.run=^TestPlan14GenerationKernelCensusRootRunner$", "-test.count=1")
90 cmd.Dir = dir
91 cmd.Env = append(os.Environ(), "PLAN14_E24_KERNEL_CHILD="+dir)
92 if out, err := cmd.CombinedOutput(); err != nil {
93 t.Fatalf("isolated root census: %v %s", err, out)
94 }
95}
96