Skip to content

Commit 1bfd892

Browse files
authored
Merge pull request #284 from Mashimiao/runtime-test-linux-default-symboliclink-validation
runtimetest: add linux default symbolic link validation
2 parents 2ca0219 + da25004 commit 1bfd892

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

cmd/runtimetest/main.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ var (
3434
"/dev/shm": "tmpfs",
3535
}
3636

37+
defaultSymlinks = map[string]string{
38+
"/dev/fd": "/proc/self/fd",
39+
"/dev/stdin": "/proc/self/fd/0",
40+
"/dev/stdout": "/proc/self/fd/1",
41+
"/dev/stderr": "/proc/self/fd/2",
42+
}
43+
3744
defaultDevices = []string{
3845
"/dev/null",
3946
"/dev/zero",
@@ -340,6 +347,29 @@ func validateLinuxDevices(spec *rspec.Spec) error {
340347
return nil
341348
}
342349

350+
func validateDefaultSymlinks(spec *rspec.Spec) error {
351+
logrus.Debugf("validating linux default symbolic links")
352+
353+
for symlink, dest := range defaultSymlinks {
354+
fi, err := os.Lstat(symlink)
355+
if err != nil {
356+
return err
357+
}
358+
if fi.Mode()&os.ModeSymlink != os.ModeSymlink {
359+
return fmt.Errorf("%v is not a symbolic link as expected", symlink)
360+
}
361+
realDest, err := os.Readlink(symlink)
362+
if err != nil {
363+
return err
364+
}
365+
if realDest != dest {
366+
return fmt.Errorf("link destation of %v expected is %v, actual is %v", symlink, dest, realDest)
367+
}
368+
}
369+
370+
return nil
371+
}
372+
343373
func validateDefaultDevices(spec *rspec.Spec) error {
344374
logrus.Debugf("validating linux default devices")
345375

@@ -564,6 +594,7 @@ func validate(context *cli.Context) error {
564594

565595
linuxValidations := []validation{
566596
validateCapabilities,
597+
validateDefaultSymlinks,
567598
validateDefaultFS,
568599
validateDefaultDevices,
569600
validateLinuxDevices,

0 commit comments

Comments
 (0)