Plugins: Improved handling of symlinks (#51324) (#51431)

Improves how we handle symlinks in plugin management.

(cherry picked from commit 04df634ef5)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
This commit is contained in:
Grot (@grafanabot)
2022-06-27 06:41:51 -04:00
committed by GitHub
parent e037f7ace7
commit 504ecbd4f9
3 changed files with 43 additions and 15 deletions
+1 -1
View File
@@ -620,7 +620,7 @@ func isSymlinkRelativeTo(basePath string, symlinkDestPath string, symlinkOrigPat
return false
}
if strings.HasPrefix(p, ".."+string(filepath.Separator)) {
if p == ".." || strings.HasPrefix(p, ".."+string(filepath.Separator)) {
return false
}
}
@@ -280,6 +280,34 @@ func TestIsSymlinkRelativeTo(t *testing.T) {
symlinkOrigPath: "/dir/sub-dir/test1.txt",
expected: false,
},
{
desc: "Symbolic link pointing to relative file outside basePath should return false",
basePath: "/dir",
symlinkDestPath: "../../",
symlinkOrigPath: "/dir/sub-sir/symlink.txt",
expected: false,
},
{
desc: "Symbolic link pointing to relative file outside basePath should return false",
basePath: "/dir",
symlinkDestPath: "../..",
symlinkOrigPath: "/dir/sub-sir/symlink.txt",
expected: false,
},
{
desc: "Symbolic link pointing to relative file outside basePath should return false",
basePath: "/dir",
symlinkDestPath: "../../",
symlinkOrigPath: "/dir/sub-sir/",
expected: false,
},
{
desc: "Symbolic link pointing to relative file outside basePath should return false",
basePath: "/dir",
symlinkDestPath: "../..",
symlinkOrigPath: "/dir/sub-sir/",
expected: false,
},
}
for _, tc := range tcs {