aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/initplace.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-21 21:59:07 +0900
committerOphestra <cat@gensokyo.uk>2025-08-22 19:27:31 +0900
commit09d284498109b847da0da1e2c5f883268a7f2d46 (patch)
tree3784dee4b4e4ec97a95cb222c70d05463ae640ef /container/initplace.go
parentd500d6e55917e12a3f98b39cf0d29b6c96de9667 (diff)
container/init: wrap syscall helper functions
This allows tests to stub all kernel behaviour, enabling measurement of all function call arguments and error injection. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/initplace.go')
-rw-r--r--container/initplace.go19
1 files changed, 9 insertions, 10 deletions
diff --git a/container/initplace.go b/container/initplace.go
index 2d98d94f..8b883458 100644
--- a/container/initplace.go
+++ b/container/initplace.go
@@ -3,8 +3,7 @@ package container
import (
"encoding/gob"
"fmt"
- "os"
- . "syscall"
+ "syscall"
)
const (
@@ -35,11 +34,11 @@ type TmpfileOp struct {
Data []byte
}
-func (t *TmpfileOp) Valid() bool { return t != nil && t.Path != nil }
-func (t *TmpfileOp) early(*setupState) error { return nil }
-func (t *TmpfileOp) apply(state *setupState) error {
+func (t *TmpfileOp) Valid() bool { return t != nil && t.Path != nil }
+func (t *TmpfileOp) early(*setupState, syscallDispatcher) error { return nil }
+func (t *TmpfileOp) apply(state *setupState, k syscallDispatcher) error {
var tmpPath string
- if f, err := os.CreateTemp(FHSRoot, intermediatePatternTmpfile); err != nil {
+ if f, err := k.createTemp(FHSRoot, intermediatePatternTmpfile); err != nil {
return wrapErrSelf(err)
} else if _, err = f.Write(t.Data); err != nil {
return wrapErrSuffix(err,
@@ -52,16 +51,16 @@ func (t *TmpfileOp) apply(state *setupState) error {
}
target := toSysroot(t.Path.String())
- if err := ensureFile(target, 0444, state.ParentPerm); err != nil {
+ if err := k.ensureFile(target, 0444, state.ParentPerm); err != nil {
return err
- } else if err = hostProc.bindMount(
+ } else if err = k.bindMount(
tmpPath,
target,
- MS_RDONLY|MS_NODEV,
+ syscall.MS_RDONLY|syscall.MS_NODEV,
false,
); err != nil {
return err
- } else if err = os.Remove(tmpPath); err != nil {
+ } else if err = k.remove(tmpPath); err != nil {
return wrapErrSelf(err)
}
return nil