Skip to content

Commit 99c5e91

Browse files
author
Dongsu Park
committed
validation: check for invalid symlink inside container
Deliberately create an invalid symlink that points out of the container, to see if the test fails inside the container. Signed-off-by: Dongsu Park <[email protected]>
1 parent 234933b commit 99c5e91

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

validation/linux_masked_paths.go

+39
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"fmt"
45
"io/ioutil"
56
"os"
67
"path/filepath"
@@ -85,6 +86,40 @@ func checkMaskedRelPaths() error {
8586
return fmt.Errorf("expected: err != nil, actual: err == nil")
8687
}
8788

89+
func checkMaskedSymlinks() error {
90+
g, err := util.GetDefaultGenerator()
91+
if err != nil {
92+
return err
93+
}
94+
95+
// Deliberately create a masked symlink that points an invalid file,
96+
// and expect an error.
97+
maskedSymlink := "/masked-symlink"
98+
99+
g.AddLinuxMaskedPaths(maskedSymlink)
100+
err = util.RuntimeInsideValidate(g, func(path string) error {
101+
testFile := filepath.Join(path, maskedSymlink)
102+
// ln -s .. /masked-symlink ; readlink -f /masked-symlink; ls -L /masked-symlink
103+
if err := os.Symlink("../masked-symlink", testFile); err != nil {
104+
return err
105+
}
106+
rPath, errR := os.Readlink(testFile)
107+
if errR != nil {
108+
return errR
109+
}
110+
_, errS := os.Stat(rPath)
111+
if errS != nil && os.IsNotExist(errS) {
112+
return errS
113+
}
114+
115+
return nil
116+
})
117+
if err != nil {
118+
return nil
119+
}
120+
return fmt.Errorf("expected: err != nil, actual: err == nil")
121+
}
122+
88123
func main() {
89124
if err := checkMaskedPaths(); err != nil {
90125
util.Fatal(err)
@@ -93,4 +128,8 @@ func main() {
93128
if err := checkMaskedRelPaths(); err != nil {
94129
util.Fatal(err)
95130
}
131+
132+
if err := checkMaskedSymlinks(); err != nil {
133+
util.Fatal(err)
134+
}
96135
}

0 commit comments

Comments
 (0)